主要内容:
O、概念
一、创建&启动容器
二、查看容器&查看容器日志
三、进入&停止&删除容器
四、导入&导出容器
五、其他容器命令
O、概念
Docker容器是镜像的一个运行实例,容器带有运行时需要的可写文件层,而镜像是静态的只读文件。可以使用docker container help命令查看Docker支持的容器操作子命令。
一、创建&启动容器
1.1. 创建容器命令 (参数可用man docker-create来查看)命令,这样新建的容器处于停止状态。
语法:docker create [OPTIONS] CONTAINER [COMMAND] [ARG...]
创建一个apline带3.8版本的容器:
docker create -it alpine:3.8
1.2. 启动容器命令(参数可用man docker-start来查看),用来启动已创建的容器。
语法:docker start [OPTIONS] [CONTAINER] [CONTAINER...]
CONTAINER:表示可以同时启动多个容器。
1.3. 创建并启动容器命令(参数可用man docker-run来查看),stop容器后也可以用该命令启动容器。
语法:docker run [OPTIONS] CONTAINER [COMMAND]
常用参数:
-it:-i表示保持标准输入是否打开,-t表示是否分配一个伪终端;
-d:表示是否在后台运行容器;
--rm:表示容器退出后是否删除;
-p:表示映射端口;
--name:指定容器别名;
当用run来创建并启动容器时,Docker在后台标准执行如下:
- 检查本地是否存在镜像,不存在则下载镜像;
- 利用镜像创建并启动容器;
- 分配一个文件系统给容器,并在只读的镜像外层挂载一层可读写层;
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
- 从网桥的地址池配置一个IP地址给容器;
- 执行用户指定的应用程序;
- 执行完毕后容器被自动终止;
创建并启动容器,并允许用户交互(exit 或 ctrl + d 表示退出):
docker run -it alpine:3.8 /bin/sh
1.4. 重启容器命令(参数可用man docker-restart来查看)。
语法:docker restart [OPTIONS] CONTAINER [COMMAND]
这个命令会将一个运行中的容器先终止,然后再重新启动。
二、查看容器&查看容器日志
2.1. 查看容器列表命令(参数可用man docker-ps来查看)。
语法:docker ps [OPTIONS]
常用参数:
-a, --all:显示所有容器,包括停止运行的容器;
-f, --filter:过滤容器(如 -f --name=ne$,表示以ne结尾的容器名);
-l, --latest:显示最近创建的容器;
--no-trunc:不截断输出内容(有时候command那列太长则会显示不完全);
2.2. 查看容器信息命令(参数可用man docker-inspect来查看)。
语法:docker inspect [OPTIONS] NAME|ID
查看容器的网络配置,grep用来过滤查看哪个配置,-A用来指定显示的行数:
docker inspect 8d | grep Networks -A 20
2.3. 查看容器内进程(参数可用man docker-top来查看)。
语法:docker top CONTAINER
2.4. 查看容器统计信息(参数可用man docker-stats来查看),会显示CPU、内存、存储、网络的使用情况信息。
语法:docker stats [OPTIONS] [CONTAINER...]
docker stats -a
2.5. 查看容器输出内容(参数可用man docker-logs来查看),用来获取容器输出信息。
语法:docker logs [OPTIONS] CONTAINER
常用参数:
-f, -follow:保持持续输出;
-tail string:输出最近的若干日志:
-t, -timestamps:显示时间戳信息;
-since string:输出某个时间开始的日志;
-until string:输出某个时间之前的日志;
-details:打印详细信息;
三、进入&停止&删除容器
3.1. 进入容器命令(参数可用man docker-exec来查看)。
语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
进入容器:
docker exec -it 8d /bin/sh
3.2. 暂停&恢复容器命令(参数可用man docker-pause 或 man docker-unpause来查看)。
语法:docker pause CONTAINER [CONTAINER...] / docker unpause CONTAINER [CONTAINER...]
暂停和恢复容器:
3.3. 终止容器命令(参数可用man docker-stop)。
语法:docker stop [OPTIONS] CONTAINER [CONTAINER...]
这个命令会先向容器发送SIGTERM信号,等待一段超时时间后(默认10s),再发送SIGKILL信号来终止容器。
清除所有处于停止状态的容器:
docker container prune
3.4. 删除容器命令(参数可用man docker-rm)。
语法:docker rm [OPTIONS] CONTAINER [CONTAINER...]
常用参数:
-f, --force:是否强行终止一个运行中的容器,在没有-f参数时,rm只能删除已经停止或退出状态的容器,不能删除运行中的容器;
-l, --link:删除容器的连接,但保留容器;
-v, --volumes:删除容器挂载的数据卷;
四、导入&导出容器
4.1. 导出容器命令(参数可用man docker-export来查看),用于导出容器到tar文件,这个tar文件是容器当时的快照状态。
语法:docker export [OPTIONS] CONTAINER
将容器在当前目录导出为alpine.tar的文件:
docker export -o alpine2.tar 8d
或
docker export > alpine2.tar 8d
4.2. 导入容器命令(参数可用man docker-import来查看),用于导入tar文件变为镜像。
语法:docker import [OPTIONS] FILE|URL [REPOSITORY[:TAG]]
将alpine.tar容器快照到本地镜像库,和load的区别在于:镜像存储文件会保存所有历史记录,而容器快照文件会丢弃所有历史记录和元数据信息,在导入时可以重新指定标签等元数据信息。
docker import alpine2.tar alpine:2
五、其他容器命令
5.1. 复制文件命令(参数可用man docker-cp来查看),用于容器和主机之间复制文件。
语法:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH | docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
复制本地文件到容器里:
vi test.sh
docker cp test.sh 8d:/
复制容器文件到本地:
docker cp 8d:/etc/passwd /root
5.2. 查看容器变更命令(参数可用man docker-diff来查看)。
语法:docker diff CONTAINER
5.3. 查看容器端口映射(参数可用man docker-port来查看):
语法:docker port CONTAINER
5.4. 更新容器配置(参数可用man docker-update来查看),用于更新容器一些运行时配置:
语法:docker port [OPTIONS] CONTAINER [CONTAINER...]