脉金捷脉金捷
主页
  • VuePress
  • VuePress2
  • Markdown基础命令
  • Java特性
  • Java修饰符
  • Java常见问题
  • Java LocalDate
  • Java Cloud ID
  • Docker-CentOS8
  • Docker-Nginx
  • Docker-Redis
  • Docker-MySQL
  • Docker-Nacos
  • Docker-Seata
  • Docker-Nodejs
  • Docker-runlike
  • Docker基础命令
  • Linux基础软件
  • Linux-SSH登录
  • Linux防火墙-iptables
  • Linux系统目录
主页
  • VuePress
  • VuePress2
  • Markdown基础命令
  • Java特性
  • Java修饰符
  • Java常见问题
  • Java LocalDate
  • Java Cloud ID
  • Docker-CentOS8
  • Docker-Nginx
  • Docker-Redis
  • Docker-MySQL
  • Docker-Nacos
  • Docker-Seata
  • Docker-Nodejs
  • Docker-runlike
  • Docker基础命令
  • Linux基础软件
  • Linux-SSH登录
  • Linux防火墙-iptables
  • Linux系统目录
  • Docker-CentOS8
  • Docker-Nginx
  • Docker-Redis
  • Docker-MySQL
  • Docker-Nacos
  • Docker-Seata
  • Docker-Nodejs
  • Docker-runlike
  • Docker基础命令

Docker 基本命令

Docker 官网:https://docs.docker.com/

Docker Hub 镜像仓库:https://hub.docker.com/

Docker 文档:https://docs.docker.com/engine/reference/run/

docker help 帮助

docker --help

docker 其他命令都可以在后面加上 --help 来查看该命令的帮助。例如:docker images --help

docker version 查看版本信息

docker version [OPTIONS]

OPTIONS说明:

  • -f:指定返回值的模板文件。

示例:

docker version

docker info 查看系统信息

显示 Docker 系统信息,包括镜像和容器数等信息。

docker info [OPTIONS]

示例:

docker info

docker images 列出镜像列表

docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a:列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
  • --digests:显示镜像的摘要信息;
  • -f:显示满足条件的镜像;
  • --format:指定返回值的模板文件;
  • --no-trunc:显示完整的镜像信息;
  • -q:只显示镜像ID。

示例:列出本地镜像

docker images

执行结果:

docker-images-result

字段说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

示例:列出 REPOSITORY 为 nginx 的镜像列表

docker images nginx

docker search 查找镜像仓库资源

从Docker Hub查找镜像。

docker search [OPTIONS] TERM

OPTIONS说明:

  • --automated:只列出 automated build类型的镜像;
  • --no-trunc:显示完整的镜像描述;
  • -f <过滤条件>:列出收藏数不小于指定值的镜像。

示例:查找 node 镜像

docker search node

执行结果:

docker search node

字段说明:

  • NAME:镜像仓库源的名称
  • DESCRIPTION:镜像的描述
  • OFFICIAL:是否 docker 官方发布
  • STARS:类似 Github 里面的 star,表示点赞、喜欢的意思。
  • AUTOMATED:自动构建。

docker login 登录到 Docker镜像仓库

docker login [OPTIONS] [SERVER]

OPTIONS说明:

  • -u:登陆的用户名
  • -p:登陆的密码

示例:

docker login -u 用户名 -p 密码

docker logout 退出 Docker镜像仓库

docker logout [OPTIONS] [SERVER]

示例:

docker logout

docker pull 拉取镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS说明:

  • -a:拉取所有 tagged 镜像
  • --disable-content-trust:忽略镜像的校验,默认开启

示例:拉取node最新版镜像

docker pull node:latest

docker push 推送镜像

docker push [OPTIONS] NAME[:TAG]

OPTIONS说明:

  • --disable-content-trust:忽略镜像的校验,默认开启

示例:

docker push app:v1.0

Docker inspect 查看镜像/容器元数据

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

OPTIONS说明:

  • -f:指定返回值的模板文件。
  • -s:显示总的文件大小。
  • --type:为指定类型返回JSON。

示例:获取 node:latest 的元数据

docker inspect node:latest

示例:在 node:latest 元数据中查找版本号

docker inspect node:latest | grep -i NODE_VERSION

docker save 打包镜像

将一个或多个镜像进行打包存储,多个镜像用空格分隔。

docker save [OPTIONS] IMAGE [IMAGE...]

OPTIONS 说明:

  • -o:输出到的文件。

示例:将 node:latest 镜像打包到当前所在目录

docker save -o ./node.tar node:latest

示例:将 node:latest 和 nginx:latest 镜像打包到当前所在目录

docker save -o ./more.tar node:latest nginx:latest

docker rmi 删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

  • -f:强制删除;
  • --no-prune:不移除该镜像的过程镜像,默认移除;

示例:删除 node:latest 镜像

docker rmi -f node:latest

如果指定镜像已经创建容器,则需要把容器删除后,才能删除该镜像。可以加上 -f 进行强制删除。删除后,可以通过 docker images 确认是否已经删除。

示例:删除所有镜像

docker rmi $(docker images -q)

docker load 载入镜像

载入镜像,如果本地已经存在该镜像则会被覆盖。

docker load [OPTIONS]

OPTIONS 说明:

  • --input , -i:指定导入的文件,代替 STDIN。
  • --quiet , -q:精简输出信息。

示例:载入 node.tar 镜像

docker load --input ./node.tar

载入完毕后,可用 docker images 命令查看是否载入成功。

docker run 创建并运行容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -a stdin:指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d:后台运行容器,并返回容器ID;
  • -i:以交互模式运行容器,通常与 -t 同时使用;
  • -P:随机端口映射,容器内部端口随机映射到主机的端口
  • -p:指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • --name="nginx-lb":为容器指定一个名称;
  • --dns 8.8.8.8:指定容器使用的DNS服务器,默认和宿主一致;
  • --dns-search example.com:指定容器DNS搜索域名,默认和宿主一致;
  • -h "mars":指定容器的hostname;
  • -e username="ritchie":设置环境变量;
  • --env-file=[]:从指定文件读入环境变量;
  • --cpuset="0-2" or --cpuset="0,1,2":绑定容器到指定CPU运行;
  • -m:设置容器使用内存最大值;
  • --net="bridge":指定容器的网络连接类型,支持 bridge/host/none/container:四种类型;
  • --link=[]:添加链接到另一个容器;
  • --expose=[]:开放一个端口或一组端口;
  • --volume, -v:绑定一个卷

示例:创建名为 nginx 的容器,将 nginx 容器的 80 端口映射到宿主机 80 端口,并用后台模式启动运行。

docker run -p 80:80 --name nginx -d nginx:latest

若想了解更多Docker 对 Nginx 的基本操作,可查看 Docker 安装配置 Nginx

docker rm 删除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

  • -f:通过 SIGKILL 信号强制删除一个运行中的容器。
  • -l:移除容器间的网络连接,而非容器本身。
  • -v:删除与容器关联的卷。

示例:强制删掉 nginx 容器

docker rm -f nginx

可同时删除多个容器,在后面把要删除的容器名称都写上,用空格隔开。

示例:强制删除 nginx1 和 nginx2 容器

docker rm -f nginx1 nginx2

示例:删除所有容器

docker rm $(docker ps -a -q)

docker create 创建容器但不启动

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

示例:创建 映射宿主机 80 端口到容器 80 端口的 nginx 容器

docker create -p 80:80 --name nginx nginx:latest

docker update 更新容器

更新一个或多个容器的配置。

docker update [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

  • --blkio-weight:阻塞IO (相对权重),介于10到1000之间,0表示禁用(默认禁止)
  • --cpu-period:限制CPU CFS(完全公平的调度程序)期限
  • --cpu-quota:限制CPU CFS(完全公平的调度程序)配额
  • --cpu-rt-period:API 1.25+,将CPU实时时间限制为微秒
  • --cpu-rt-runtime:API 1.25+,将CPU实时运行时间限制为微秒
  • --cpu-shares, -c:CPU份额(相对权重)
  • --cpus:API 1.29+,CPU数量
  • --cpuset-cpus:允许执行的CPU(0-3,0,1)
  • --cpuset-mem:允许执行的MEM(0-3,0,1)
  • --kernel-memory:内核内存限制
  • --memory-swap:交换限制等于内存加交换,“-1”以启用无限交换
  • --memory-reservatio:内存软限制
  • --memory, -m:内存限制
  • --pids-limit:API 1.40+,调节容器pids限制(-1表示无限制)
  • --restart:容器退出时重新启动策略以应用

示例:更新 CPU 共享数量

docker update --cpu-shares 512 nginx

示例:更新容器的重启策略

docker update --restart=always nginx

示例:更新容器内存

docker update -m 512M nginx

docker start 运行容器

docker start [OPTIONS] CONTAINER [CONTAINER...]

示例:启动运行 nginx 容器

docker start nginx

docker stop 停止容器运行

docker stop [OPTIONS] CONTAINER [CONTAINER...]

示例:停止 nginx 容器运行

docker stop nginx

docker restart 重启容器

docker restart [OPTIONS] CONTAINER [CONTAINER...]

示例:重新启动运行 nginx 容器

docker restart nginx

docker pause 容器暂停运行

docker pause CONTAINER [CONTAINER...]

示例:暂停 nginx 容器运行

docker pause nginx

docker unpause 容器恢复运行

docker unpause CONTAINER [CONTAINER...]

示例:恢复 nginx 容器运行

docker unpause nginx

docker ps 查看容器运行状态

docker ps [OPTIONS]

OPTIONS说明:

  • -a:显示所有的容器,包括未运行的。
  • -f:根据条件过滤显示的内容。
  • --format:指定返回值的模板文件。
  • -l:显示最近创建的容器。
  • -n:列出最近创建的n个容器。
  • --no-trunc:不截断输出。
  • -q:静默模式,只显示容器编号。
  • -s:显示总的文件大小。

示例:查看包括已停止运行的所有容器状态

docker ps -a

docker exec 进入容器执行命令

进入运行中的容器执行命令。

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

  • -d:分离模式: 在后台运行
  • -i:即使没有附加也保持STDIN 打开
  • -t:分配一个伪终端

示例:进入 nginx 容器查看版本号

docker exec -it nginx /bin/bash
# 进入容器后执行
node -v
# 从容器中退出
exit

docker logs 查看容器运行日志

docker logs [OPTIONS] CONTAINER

OPTIONS说明:

  • -f:跟踪日志输出
  • --since:显示某个开始时间的所有日志
  • -t:显示时间戳
  • --tail:仅列出最新N条容器日志

示例:跟踪 nginx 的日志输出

docker logs -f nginx

docker kill 杀掉运行中的容器

docker kill [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

  • -s:向容器发送一个信号

示例:杀掉运行中的 nginx 容器

# 直接杀掉容器
docker kill nginx
# 发送 kill 信号给 nginx 容器杀掉
docker kill -s kill nginx

docker port 列出容器映射端口

docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]

示例:列出 nginx 容器的映射到宿主机的端口

docker port nginx

docker top 列出容器中进程信息

docker top [OPTIONS] CONTAINER [ps OPTIONS]

示例:查看 nginx 容器运行的进程信息

docker top nginx

示例:查看所有运行容器的进程信息

for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done

docker attach 连接运行中的容器

docker attach 命令 和 docker exec 命令 很像,不同的地方是 docker attach 连接后退出时会停止容器运行,但是用 docker attach 命令可以使用标准的键盘输入,标准的屏幕输出,错误输出。比较适合用来排查问题。

docker attach [OPTIONS] CONTAINER

示例:连接 nginx 容器

docker attach --sig-proxy=false nginx

OPTIONS说明:

  • --sig-proxy=false:退出连接后不会停止容器。

docker cp 拷贝数据

用于容器与主机之间的数据拷贝。

拷贝文件: 容器 > 宿主机。

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

拷贝文件: 宿主机 > 容器。

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS说明:

-L:保持源目标中的链接

示例:将名为 nginx 容器中的 /etc/nginx/conf.d 拷贝到宿主机 的当前目录下

docker cp nginx:/etc/nginx/conf.d ./

示例:将宿主机当前当前目录下的 test.md 文件拷贝到名为 nginx 容器下的 /etc/nginx/conf.d/ 目录里。

docker cp ./test.md nginx:/etc/nginx/conf.d/

拷贝后,可通过 docker exec 命令进入容器查看。

docker diff 查看文件结构更改

docker diff [OPTIONS] CONTAINER

示例:查看 nginx 容器的文件结构更改信息

docker diff nginx

docker commit 提交容器更改创建新镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a:提交的镜像作者;
  • -c:使用Dockerfile指令来创建镜像;
  • -m:提交时的说明文字;
  • -p:在commit时,将容器暂停。

示例:将 nginx 容器保存为新的镜像,并添加提交人信息和说明信息。

docker commit -a "maijinjie.cn" -m "maijinjie" nginx  nginx:v1 

docker events 实时查看事件

通过 docker events 可实时查看 docker 事件日志。

docker events [OPTIONS]

OPTIONS说明:

  • -f :根据条件过滤事件;
  • --since :指定时间戳开始的事件;
  • --until :指定时间戳截止的事件;

示例:获取跟镜像 nginx:latest 相关的事件,从 2022-02-21 14:00:00 开始。

docker events -f "image=nginx:latest" --since="1645423200"

docker wait 等待容器停止

docker wait 会一直挂起,直到容器停止后,打印出容器停止的信息。

docker wait [OPTIONS] CONTAINER [CONTAINER...]

示例:等待 nginx 容器停止

docker wait nginx

docker export 导出容器文件系统

通过 docker export 导出的容器tar包,可以使用 docker impot 导入。和 docker save 不同的是,export 导出不会把历史的层一起打包,所以不能回滚历史层,但是打包后的体积会小一些。

docker export [OPTIONS] CONTAINER

OPTIONS说明:

  • -o:将输入内容写到文件。

示例:将 nginx 容器内的日志文件保存为tar文件,注意这里指定的名称是容器名称。

docker export -o nginx.tar nginx

docker import 导入容器文件系统

docker import [OPTIONS] CONTAINER

OPTIONS说明:

  • -o:将输入内容写到文件。

示例:将 nginx 容器内的日志文件保存为tar文件,注意这里指定的名称是容器名称。

docker import nginx.tar nignx:v1
  • import 后产生的镜像,不能使用 docker tag 回滚历史层。因为 export 打包的文件系统不包含历史。
  • 通过 docker import 导入容器tar包,会创建容器对应的镜像,需指定镜像名称和tags,如果没有指定,则导入的镜像没有名称和id。
  • 如果 import 时,docker 内原本存在同名镜像,不会被覆盖,而是同时存在(一个作为容器导入的镜像,一个原本就是镜像)。
  • 如果 import 时,docker 内已存在同样 import 进来的同名镜像,则会将旧的 镜像名称 和 镜像ID 都清空。

docker-import-result

  • import 导入的镜像,不能使用 “ docker images 镜像名称 ” 列出。

docker-import-result

  • import 导入的镜像,不能使用 “ docker rmi 镜像名称:tags ” 删除,可用 “ docker rmi 镜像id ” 删除。

docker history 查看镜像创建历史

docker history [OPTIONS] IMAGE

OPTIONS说明:

  • -H:以可读的格式打印镜像大小和日期,默认为true;
  • --no-trunc:显示完整的提交记录;
  • -q:仅列出提交记录ID。

示例:查看 nginx:latest 镜像的创建历史

docker history nginx:latest

docker tag 标记镜像

标记本地镜像,将其归入某一仓库。

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

示例:

docker tag nginx:latest nginx:v1

docker build 构建镜像

使用 Dockerfile 构建镜像。

docker build [OPTIONS] PATH | URL | -

OPTIONS说明:

  • --build-arg=[]:设置镜像创建时的变量;
  • --cpu-shares:设置 cpu 使用权重;
  • --cpu-period:限制 CPU CFS周期;
  • --cpu-quota:限制 CPU CFS配额;
  • --cpuset-cpus:指定使用的CPU id;
  • --cpuset-mems:指定使用的内存 id;
  • --disable-content-trust:忽略校验,默认开启;
  • -f:指定要使用的Dockerfile路径;
  • --force-rm:设置镜像过程中删除中间容器;
  • --isolation:使用容器隔离技术;
  • --label=[]:设置镜像使用的元数据;
  • -m:设置内存最大值;
  • --memory-swap:设置Swap的最大值为内存+swap,"-1"表示不限swap;
  • --no-cache:创建镜像的过程不使用缓存;
  • --pull:尝试去更新镜像的新版本;
  • --quiet, -q:安静模式,成功后只输出镜像 ID;
  • --rm:设置镜像成功后删除中间容器;
  • --shm-size:设置/dev/shm的大小,默认值是64M;
  • --ulimit:Ulimit配置。
  • --squash:将 Dockerfile 中所有的操作压缩为一层。
  • --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
  • --network: 默认 default。在构建期间设置RUN指令的网络模式

示例:使用当前目录的 Dockerfile 创建镜像,标签为 myapp:v1。

docker build -t myapp:v1 .
Last Updated: 2/22/22, 6:08 PM
Contributors: maijinjie
Prev
Docker-runlike