Docker命令

48 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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 版本信息

参考

docs.docker.com/engine/refe…