操作容器
列出容器
使用 docker ps [OPTIONS]
命令列出容器:
OPTIONS说明(常用):
-a:列出当前所有正在运行的容器+历史上运行过的容器。
-l:显示最近创建的容器。
-n:显示最近n个创建的容器。
-q:静默模式,只显示容器编号。
启动
启动容器有两种方式:
一种是基于镜像新建一个容器并启动
docker run
;1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS 说明:
–name=”容器新名字”: 为容器指定一个名称;
-d:后台运行容器并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P:随机端口映射;
-p:指定端口映射;
启动交互式容器:
1
docker run -it ubuntu /bin/bash
使用镜像ubuntu:latest以交互模式启动一个容器,在容器内执行 /bin/bash 命令。
另外一个是将在终止状态(
stopped
)的容器重新启动docker start
。重启容器:
docker restart 容器名/容器ID
后台运行
可以通过 -d
参数实现容器的后台运行:
1 | C:\Users\63544>docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" |
此时容器会在后台运行并不会把输出的结果打印到宿主机的STDOUT上面(输出结果可以用 docker logs
查看):
1 | C:\Users\63544>docker container logs 905b |
使用 -d
参数启动后会返回一个唯一的 id,也可以通过 docker container ls
命令来查看容器信息(docker ps
命令也可以查看容器信息):
1 | C:\Users\63544>docker container ls |
终止容器
可以使用 docker stop
来终止一个运行中的容器。
此外,当 Docker 容器中指定的应用终结时,容器也自动终止。
进入容器
在使用 -d
参数时,容器会在后台运行。那么可以使用 attach
或者 exec
命令进入容器:
docker attach
命令:如果从这个 stdin 中 exit,会导致容器的停止。docker exec
命令:如果从这个 stdin 中 exit,不会导致容器的停止。推荐使用 exec 命令。-i
参数:只是打开容器的 STDIN,此时没有 Linux 命令提示符。-it
参数:可以看到 Linux 命令提示符。
导入和导出容器
docker export
命令:可以导出容器。
1 | docker export 7691a814370e > ubuntu.tar |
docker import
命令:从容器快照文件中再导入为镜像。
删除容器
- 可以使用
docker rm
来删除一个处于终止状态的容器。- 如果要删除一个运行中的容器,可以添加
-f
参数。
- 如果要删除一个运行中的容器,可以添加
docker container prune
清除所有处于终止状态的容器。
重要操作
启动守护式容器
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的后台运行模式。
1 | docker run -d 容器名 |
启动前台交互式容器
1 | $ docker run -it 容器名 bashShell |
查看容器日志
1 | docker logs 容器ID |
查看容器内运行的进程
1 | docker top 容器ID |
查看容器内部细节
1 | docker inspect 容器ID |
进入正在运行的容器并以命令行交互
可以用两个命令:
docker exec -it 容器ID bashShell
docker attach 容器ID
两种命令的区别:
- attach 直接进入容器启动命令的终端,不会启动新的进程。用 exit 退出,会导致容器的停止。
- exec 是在容器中打开新的终端,并且可以启动新的进程。用 exit 退出,不会导致容器的停止。
推荐使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。
从容器内拷贝文件到主机上
1 | docker cp 容器ID:容器内路径 目的主机路径 |
导入和导出容器
export:导出容器的内容留作为一个tar归档文件。
1
docker export 容器ID > 文件名.tar
import:从tar包中的内容创建一个新的文件系统再导入为镜像。
1
cat 文件名.tar | docker import - 镜像名:镜像版本号
访问仓库
Docker Hub
Docker 官方维护了一个公共仓库 Docker Hub:
docker search
命令可以查找官方仓库中的镜像。docker pull
命令下载镜像到本地。在登录后,可以使用
docker push username/镜像名:标签
将自己的镜像推送到 Docker Hub 中。
若不想使用官方的 Docker Hub 仓库,也可以创建私有仓库。