本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Docker命令介绍:容器生命周期管理、容器操作、容器rootfs命令、镜像仓库、本地镜像管理
容器生命周期管理
1. run
在新容器中运行命令 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS
-d/--detach: 后台运行容器并返回容器ID -i/--interactive: 以交互模式(STDIN)运行容器,通常与 -t 同时使用 -t/--tty: 分配一个伪输入终端,通常与 -i 同时使用 -P/--publish-all: 随机端口映射 -p/--publish: 指定端口映射。格式为:宿主机端口:容器端口 --name: 为容器指定一个名称 -e/--env: 设置环境变量 -m/--memory: 设置容器使用内存最大值 -v/--volume: 绑定一个卷
2. start/stop/restart
启动、停止、重启容器 docker start [OPTIONS] CONTAINER [CONTAINER...]
3. kill
杀死一个或多个正在运行的容器 docker kill [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS
-s: 向容器发送一个信号,KILL(默认)/SIGHUP/HUP
4. rm
删除一个或多个容器 docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS
-f: 强制移除正在运行的容器(使用SIGKILL) -l: 删除指定的网络链接,而非容器本身 -v: 删除与容器关联的卷
5. pause/unpause
暂停、恢复容器中所有的进程 docker pause [OPTIONS] CONTAINER [CONTAINER...]
6. create
创建一个新的容器但不启动它(语法同docker run) docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
7. exec
在运行的容器中执行命令 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS
-d: 分离模式: 在后台运行 -i: 即使没有附加也保持STDIN 打开 -t: 分配一个伪终端
8. rename
容器重命名 docker rename CONTAINER NEW_NAME
9. update
更新一个或多个容器的配置
10. stats
显示容器资源使用统计信息的实时流 docker stats [OPTIONS] [CONTAINER...]
Examples
# 使用镜像nginx:latest以后台模式启动一个容器,将容器命名为mynginx,端口映射,目录映射
$ docker run --name mynginx -p 80:80 -v /data:/data -d nginx:latest
# 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令
$ docker run -it nginx:latest /bin/bash
# 在容器mynginx中开启一个交互模式的终端
$ docker exec -it mynginx /bin/bash
# 暂停容器提供服务
$ docker pause mynginx
# 杀掉容器
$ docker kill -s KILL mynginx
# 删除所有已经停止的容器
$ docker rm $(docker ps -a -q)
容器操作
1. ps
列出容器 docker ps [OPTIONS]
OPTIONS
-a/-all: 显示所有容器(默认只显示正在执行的容器) -f/--filter: 根据条件过滤显示的内容 -s/--size: 显示总文件大小
2. inspect
获取容器/镜像的元数据 docker inspect [OPTIONS] NAME|ID [NAME|ID...]
3. top
显示容器正在运行的进程,支持 ps 命令参数 docker top CONTAINER [ps OPTIONS]
4. attach
连接到正在运行中的容器,(带上--sig-proxy=false,CTRL-C才可以退出容器) docker attach [OPTIONS] CONTAINER
5. events
从服务器获取实时事件 docker events [OPTIONS]
OPTIONS
-f: 根据条件过滤事件 --since: 显示自时间戳以来创建的所有事件 --until: 直到此时间戳之前的流事件
6. logs
获取容器的日志 docker logs [OPTIONS] CONTAINER
OPTIONS
-f: 跟踪日志输出 --since: 显示某个开始时间的所有日志 -t: 显示时间戳 --tail: 仅列出最新N条容器日志
7. wait
阻塞运行直到容器停止,然后打印出它的退出代码 docker wait [OPTIONS] CONTAINER [CONTAINER...]
8. export
将文件系统作为一个tar归档文件导出到STDOUT docker export [OPTIONS] CONTAINER
9. port
列出指定的容器的端口映射 docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
Examples
# 显示所有容器以及总文件大小
$ docker ps -a -s
# 根据状态过滤容器
$ docker ps --filter status=running
# 带上--sig-proxy=false,确保CTRL-C可以退出容器
$ docker attach --sig-proxy=false mynginx
# 显示docker镜像为mysql:5.6,2020年1月1日后的相关事件
$ docker events -f "image"="mysql:5.6" --since="2020-01-01T00:00:00"
# 查看容器mynginx从2016年7月1日后的最新10条日志。
$ docker logs --since="2016-07-01" --tail=10 mynginx
容器rootfs命令
1. commit
从容器创建一个新的镜像 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS
-a: 提交的镜像作者 -c: 使用Dockerfile指令来创建镜像 -m: 提交时的说明文字 -p: 在commit时,将容器暂停
2. cp
用于容器与主机之间的数据拷贝 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS
-L: 保持源目标中的链接
3. diff
检查容器里文件结构的更改 docker diff [OPTIONS] CONTAINER
镜像仓库
4. login/logout
登陆/登出到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub docker login [OPTIONS] [SERVER]
OPTIONS
-u: 登陆的用户名 -p: 登陆的密码
5. pull
从镜像仓库中拉取或者更新指定镜像 docker pull [OPTIONS] NAME[:TAG|@DIGEST]
6. push
将本地的镜像上传到镜像仓库,要先登陆到镜像仓库 docker push [OPTIONS] NAME[:TAG]
7. search
从Docker Hub查找镜像
OPTIONS
--no-trunc: Don’t truncate output --filter , -f: Filter output based on conditions provided
$ docker search --filter=stars=3 --no-trunc busybox
本地镜像管理
1. images
列出本地镜像 docker images [OPTIONS] [REPOSITORY[:TAG]]
2. rmi
删除本地一个或多少镜像 docker rmi [OPTIONS] IMAGE [IMAGE...]
3. tag
标记本地镜像,将其归入某一仓库 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
4. build
用于使用Dockerfile构建Docker镜像 docker build [OPTIONS] PATH | URL | -
URL参数可以引用三种资源
- Git repositories(Git 仓库)
- Tarball contexts(Tarball 上下文)
- Text files(文本文件)
$ docker build https://github.com/docker/rootfs.git#container:docker
$ docker build http://server/context.tar.gz
$ docker build - < Dockerfile
OPTIONS
-f/--file: 指定要使用的Dockerfile路径 --build-arg: 设置镜像创建时的变量 -c/--cpu-shares: CPU份额(相对权重) -m/--memory: 设置内存最大值 --label: 设置镜像的元数据 -t/--tag: 镜像的名字及标签,name:tag
5. history
查看指定镜像的创建历史 docker history [OPTIONS] IMAGE
6. save
将指定镜像保存成tar归档文件
7. load
导入使用docker save命令导出的镜像
8. import
从归档文件中创建镜像 docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
Examples
# 使用当前目录的Dockerfile创建镜像,标签为myapp_prod
$ docker build -t myapp_prod .
info|version
1. info
查看docker系统信息
2. version
显示 Docker 版本信息