Docker 笔记
Docker
安装
- Mac
$ brew cask install docker
- Ubuntu
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
免 root 使用 docker
sudo groupadd docker # 添加 docker 用户组,docker 安装时应该已经添加过,可略去
sudo gpasswd -a $USER docker # 将登陆用户加入到 docker 用户组中
newgrp docker # 更新用户组
镜像加速
网易:https://hub-mirror.c.163.com
七牛云:https://reg-mirror.qiniu.com
Linux
在 /etc/docker/daemon.json 中写入:
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
重启服务:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
macOS

Docker 使用
运行交互式的容器
$ docker run -it ubuntu:20.04 /bin/bash
- -t:在新容器内指定一个伪终端或终端。
- -i:允许对容器内的标准输入(STDIN)进行交互。
此时已进入 docker 中的 Ubuntu 20.04
root@3be79357f5f2:/# /proc/version
Linux version 4.19.76-linuxkit (root@4abe09437d05) (gcc version 8.3.0 (Alpine 8.3.0)) #1 SMP Tue May 26 11:42:35 UTC 2020
可通过 CTRL + D 或 exit 命令退出容器
启动容器(后台模式)
创建一个以进程方式运行的容器:
$ docker run -d ubuntu:20.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
输出为一个长字符串作为容器 ID:
c37fc2e85c1d2b89d477b7ecfe985a7d5e083a7ace45a0af5702913647d8cad7
查看运行中的容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c37fc2e85c1d ubuntu:20.04 "/bin/sh -c 'while t…" 3 minutes ago Up 3 minutes angry_bassi
输出字段解释
| Name | 解释 |
|---|---|
| CONTAINER ID | 容器 ID |
| IMAGE | 使用的镜像 |
| COMMAND | 启动容器时运行的命令 |
| CREATED | 容器的创建时间 |
| STATUS | 容器状态 |
| PORTS | 容器的端口信息和使用的连接类型(TCP/UDP) |
| NAMES | 自动分配或手动指定的容器名称 |
其中状态共有 7 种:
- created
- restarting
- running
- removing
- paused
- exited
- dead
在宿主机内使用 docker logs 命令,查看容器内的标准输出:
$ docker logs c37fc2e85c1d

例
docker run -it \
--name bt \
-p 16881:16881 \
-p 16881:16881/udp \
-p 18080:8080 \
-v /home/zhaochunyu/workspace/BT:/BT \
ubuntu:18.04 /bin/bash
- --name:指定容器名称
- -p:端口映射
- -v:目录挂载
停止容器
$ docker stop c37fc2e85c1d
停止的容器可通过 docker restart 重启:
$ docker restart c37fc2e85c1d
进入容器
在使用 -d 参数时,容器可进入后台运行,可通过以下命令进入:
- docker attach
- docker exec:常用,退出容器终端不会导致容器的停止。
attach 命令
$ docker attach aa571dd81169
注意:从这个容器退出会导致容器的停止
exec 命令
docker exec -it aa571dd81169 /bin/bash
退出容器不会导致容器的停止
导出和导入容器
导出
$ docker export aa571dd81169 > ubuntu.tar
导出容器 aa571dd81169 的快照到 ubuntu.tar。
导入
使用 docker import 从容器快照文件中导入为镜像
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1
删除容器
$ docker rm -f aa571dd81169
清理所有处于终止状态的容器
$ docker container prune

浙公网安备 33010602011771号