本文章非原创,主要内容基于xaoc的笔记。
参考: https://yeasy.gitbook.io/docker_practice/install/debian https://devhints.io/docker https://www.cnblogs.com/sparkdev/p/7821376.html https://docs.docker.com/engine/install/debian/
[TOC]
1.使用脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh
# 阿里源
sudo sh get-docker.sh --mirror Aliyun
2.启动 Docker
sudo systemctl enable docker
sudo systemctl start docker
3.将当前用户加入 docker 组
root 用户跳过这步
#建立 docker 组
sudo groupadd docker
#将当前用户加入 docker 组
sudo usermod -aG docker $USER
4.测试 Docker 是否安装正确
docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
若能正常输出以上信息,则说明安装成功。
5.常见命令
for example:
# 启动 peace@192:~$ docker run -d -p 9001:80 -it badapple9/speedtest-x 61a8ceb360bd2527148a652bc2279bc5f58ad25d27b36a13520de911aad72fff peace@192:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 61a8ceb360bd badapple9/speedtest-x "docker-php-entrypoi…" 17 seconds ago Up 16 seconds 0.0.0.0:9001->80/tcp, :::9001->80/tcp intelligent_northcutt # 结束 peace@192:~$ docker stop 61a8 61a8 peace@192:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
设置开机启动
docker update --restart=no
docker update --restart=always docker_id
删除docker内容
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
docker system prune -a
进入容器
attach 命令
如果从这个 stdin 中 exit,会导致容器的停止。 可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。
docker attach [CONTAINER ID]
docker attach --sig-proxy=false [CONTAINER ID]
exec 命令
只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。 当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。
$ docker exec -it [CONTAINER ID] bash
docker start/stop
docker start [options] CONTAINER
-a, --attach # attach stdout/err
-i, --interactive # attach stdin
docker stop [options] CONTAINER
Start/stop a container
.
docker ps
$ docker ps
$ docker ps -a
$ docker kill $ID
Manage container
s using ps/kill.
docker stats
输出的主要内容: [CONTAINER]:以短格式显示容器的 ID。 [CPU %]:CPU 的使用情况。 [MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。 [MEM %]:以百分比的形式显示内存使用情况。 [NET I/O]:网络 I/O 数据。 [BLOCK I/O]:磁盘 I/O 数据。 [PIDS]:PID 号。
#每隔 1 秒钟刷新一次
docker stats
#只返回当前的状态
docker stats --no-stream
#只输出指定的容器
docker stats --no-stream registry 1493
docker stats 命令用来显示容器使用的系统资源。
docker 启动 重启 关闭命令
# 启动
systemctl start docker
# 守护进程重启
systemctl daemon-reload
# 重启 docker 服务
systemctl restart docker
#service docker restart
# 关闭 docker
systemctl stop docker
systemctl stop docker.socket
#service docker stop
#service docker.socket stop
6.卸载 Docker 引擎
-
卸载 Docker Engine、CLI、Containerd 和 Docker Compose 软件包:
$ sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
-
主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷:
$ sudo rm -rf /var/lib/docker $ sudo rm -rf /var/lib/containerd
您必须手动删除任何已编辑的配置文件。
实测会少卸载几个
peace@192:~$ sudo apt list|grep 'docker'| grep '安装' docker-ce-rootless-extras/bullseye,now 5:20.10.17~3-0~debian-bullseye amd64 [已安装] docker-scan-plugin/bullseye,now 0.17.0~debian-bullseye amd64 [已安装]
手动再卸掉就行
参考链接
https://yeasy.gitbook.io/docker_practice/container/attach_exec