概念
容器是独立运行的一个或一组应用,以及它们的运行态环境
虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用
启动容器
# 基于某个镜像启动docker run <image>:<tag># 启动一个已经停止的容器docker container start <容器ID>
守护态运行
- 指将容器运行在后台,而不是直接将执行命令的结果输出在宿主机下
- 通过
-d参数实现,返回容器ID,容器容器可采用docker container logs [container ID or NAMES]查看
# 简单示例,非后台运行docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"# 后台运行docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
进入容器
attach和exec均可进入一个在后台运行的容器exec为更加推荐的方式-t: 分配伪终端-i: 可使用 linux 命令
# 447732d6511940a5fc84b29a38350f9bf837f0285ef9308db513f9af528af997docker run -dit ubuntu:18.04# attach 方式进入 , 执行 exit 将导致容器终止docker attach 447732# exec 方式进入, 执行 exit 不会导致容器终止docker exec -it 447732 bash
终止与重启容器
- 额外:容器中指定的应用终结时,容器也自动终止
# 终止某个运行中的容器docker container stop <容器ID># 重启某个容器(先终止,再启动)docker container restart <容器ID>
删除容器
# 单个删除docker container rm <容器ID>/<容器名称># 全部删除docker container prune
导出
# 导出容器快照到本地$ docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES7691a814370e ubuntu:18.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test$ docker export 7691a814370e > ubuntu.tar
导入
docker load: 导入镜像存储文件到本地镜像库, 保存完整记录,体积大docker import: 导入一个容器快照到本地镜像库, 丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态), 但可以重新指定标签等元数据信息
# 从容器快照导入为镜像$ cat ubuntu.tar | docker import - test/ubuntu:v1.0$ docker image lsREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEtest/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB
