Docker 备忘单 docker-cheat-sheet Docker 命令、帮助和提示 使用容器 镜像命令 网络 镜像标记和推送到 DOCKERHUB 标签是指向镜像 ID 的标签 扩展 DOCKERFILE 卷 绑定挂载 DOCKER COMPOSE

2025-05-24

Docker 速查表

docker-cheat-sheet

Docker 命令、帮助和提示

使用容器

图像命令

联网

图像标记并推送至 DOCKERHUB

标签是指向图像 ID 的标签

扩展 DOCKERFILE

绑定坐骑

Docker 编写

docker-cheat-sheet

Docker 命令、帮助和提示

显示命令和管理命令

$ docker
Enter fullscreen mode Exit fullscreen mode

Docker 版本信息

$ docker version
Enter fullscreen mode Exit fullscreen mode

显示集装箱数量等信息

$ docker info
Enter fullscreen mode Exit fullscreen mode

使用容器

在前台创建并运行容器

$ docker container run -it -p 80:80 nginx
Enter fullscreen mode Exit fullscreen mode

创建并在后台运行容器

$ docker container run -d -p 80:80 nginx
Enter fullscreen mode Exit fullscreen mode

速记

$ docker container run -d -p 80:80 nginx
Enter fullscreen mode Exit fullscreen mode

命名容器

$ docker container run -d -p 80:80 --name nginx-server nginx
Enter fullscreen mode Exit fullscreen mode

提示:RUN 做了什么

  • 在图像缓存中查找名为 nginx 的图像
  • 如果在缓存中找不到,它会查找 Dockerhub 上的默认镜像仓库
  • 将其拉下来(最新版本),存储在图像缓存中
  • 在新容器中启动它
  • 我们指定在主机上使用端口 80- 并转发到容器上的端口 80
  • 我们可以执行“$ docker container run --publish 8000:80 --detach nginx”来使用端口 8000
  • 我们可以指定类似“nginx:1.09”的版本

列出正在运行的容器

$ docker container ls
Enter fullscreen mode Exit fullscreen mode

或者

$ docker ps
Enter fullscreen mode Exit fullscreen mode

列出所有容器(即使未运行)

$ docker container ls -a
Enter fullscreen mode Exit fullscreen mode

停止容器

$ docker container stop [ID]
Enter fullscreen mode Exit fullscreen mode

停止所有正在运行的容器

$ docker stop $(docker ps -aq)
Enter fullscreen mode Exit fullscreen mode

删除容器(无法删除正在运行的容器,必须先停止)

$ docker container rm [ID]
Enter fullscreen mode Exit fullscreen mode

要删除正在运行的容器,请使用 force(-f)

$ docker container rm -f [ID]
Enter fullscreen mode Exit fullscreen mode

删除多个容器

$ docker container rm [ID] [ID] [ID]
Enter fullscreen mode Exit fullscreen mode

删除所有容器

$ docker rm $(docker ps -aq)
Enter fullscreen mode Exit fullscreen mode

获取日志(使用名称或 ID)

$ docker container logs [NAME]
Enter fullscreen mode Exit fullscreen mode

列出容器中正在运行的进程

$ docker container top [NAME]
Enter fullscreen mode Exit fullscreen mode

提示:关于容器

Docker 容器通常被比作虚拟机,但它们实际上只是在主机操作系统上运行的进程。在 Windows/Mac 系统中,Docker 运行在一个微型虚拟机中,因此要查看进程,您需要直接连接到该虚拟机。而在 Linux 系统中,您可以运行“ps aux”直接查看进程。

图像命令

列出我们已拉取的镜像

$ docker image ls
Enter fullscreen mode Exit fullscreen mode

我们也可以只拉下图片

$ docker pull [IMAGE]
Enter fullscreen mode Exit fullscreen mode

删除图片

$ docker image rm [IMAGE]
Enter fullscreen mode Exit fullscreen mode

删除所有图像

$ docker rmi $(docker images -a -q)
Enter fullscreen mode Exit fullscreen mode

提示:关于图像

  • 图像是应用程序二进制文件和依赖项,其中包含有关图像数据和如何运行图像的元数据
  • 镜像不是一个完整的操作系统。没有内核,也没有内核模块(驱动程序)
  • Host提供内核,VM之间差别很大

一些示例容器创建

NGINX:

$ docker container run -d -p 80:80 --name nginx nginx (-p 80:80 is optional as it runs on 80 by default)
Enter fullscreen mode Exit fullscreen mode

阿帕奇:

$ docker container run -d -p 8080:80 --name apache httpd
Enter fullscreen mode Exit fullscreen mode

蒙戈德:

$ docker container run -d -p 27017:27017 --name mongo mongo
Enter fullscreen mode Exit fullscreen mode

MYSQL:

$ docker container run -d -p 3306:3306 --name mysql --env MYSQL_ROOT_PASSWORD=123456 mysql
Enter fullscreen mode Exit fullscreen mode

集装箱信息

查看容器信息

$ docker container inspect [NAME]
Enter fullscreen mode Exit fullscreen mode

特定属性(--格式)

$ docker container inspect --format '{{ .NetworkSettings.IPAddress }}' [NAME]
Enter fullscreen mode Exit fullscreen mode

性能统计(CPU、内存、网络、磁盘等)

$ docker container stats [NAME]
Enter fullscreen mode Exit fullscreen mode

访问容器

创建新的 nginx 容器并进入

$ docker container run -it --name [NAME] nginx bash
Enter fullscreen mode Exit fullscreen mode
  • i = 交互式 如果未连接则保持 STDIN 处于打开状态
  • t = tty-打开提示符

对于 Git Bash,使用“winpty”

$ winpty docker container run -it --name [NAME] nginx bash
Enter fullscreen mode Exit fullscreen mode

运行/创建 Ubuntu 容器

$ docker container run -it --name ubuntu ubuntu
Enter fullscreen mode Exit fullscreen mode

(没有 bash 因为 ubuntu 默认使用 bash)

您还可以使用 -rm 标志使退出容器时不会停留

$ docker container run --rm -it --name [NAME] ubuntu
Enter fullscreen mode Exit fullscreen mode

访问已经创建的容器,以-ai开头

$ docker container start -ai ubuntu
Enter fullscreen mode Exit fullscreen mode

使用 exec 编辑配置等

$ docker container exec -it mysql bash
Enter fullscreen mode Exit fullscreen mode

Alpine 是一款非常小巧的 Linux 发行版,非常适合 docker

$ docker container run -it alpine sh
Enter fullscreen mode Exit fullscreen mode

(使用 sh 因为它不包含 bash)
(alpine 使用 apk 作为其包管理器 - 如果需要可以安装 bash)

联网

“bridge”或“docker0”是默认网络

获取端口

$ docker container port [NAME]
Enter fullscreen mode Exit fullscreen mode

列出网络

$ docker network ls
Enter fullscreen mode Exit fullscreen mode

检查网络

$ docker network inspect [NETWORK_NAME]
("bridge" is default)
Enter fullscreen mode Exit fullscreen mode

创建网络

$ docker network create [NETWORK_NAME]
Enter fullscreen mode Exit fullscreen mode

在网络上创建容器

$ docker container run -d --name [NAME] --network [NETWORK_NAME] nginx
Enter fullscreen mode Exit fullscreen mode

将现有容器连接到网络

$ docker network connect [NETWORK_NAME] [CONTAINER_NAME]
Enter fullscreen mode Exit fullscreen mode

断开容器与网络的连接

$ docker network disconnect [NETWORK_NAME] [CONTAINER_NAME]
Enter fullscreen mode Exit fullscreen mode

从容器中分离网络

$ docker network disconnect
Enter fullscreen mode Exit fullscreen mode

图像标记并推送至 DOCKERHUB

标签是指向图像 ID 的标签

$ docker image ls
Enter fullscreen mode Exit fullscreen mode

你会看到每个图像都有一个标签

重新标记现有图像

$ docker image tag nginx btraversy/nginx
Enter fullscreen mode Exit fullscreen mode

上传到dockerhub

$ docker image push bradtraversy/nginx
Enter fullscreen mode Exit fullscreen mode

如果被拒绝,

$ docker login
Enter fullscreen mode Exit fullscreen mode

为新图像添加标签

$ docker image tag bradtraversy/nginx bradtraversy/nginx:testing
Enter fullscreen mode Exit fullscreen mode

DOCKERFILE 部分

  • FROM - 使用的操作系统。常见的有 alpine、debian、ubuntu
  • ENV——环境变量
  • RUN——运行命令/shell脚本等
  • EXPOSE——要公开的端口
  • CMD - 从映像启动新容器时运行的最终命令
  • WORKDIR - 设置工作目录(也可以使用“RUN cd /some/path”)
  • COPY # 将文件从主机复制到容器

从 dockerfile 构建镜像(reponame 可以是任意的)

来自与 Dockerfile 相同的目录

$ docker image build -t [REPONAME] .
Enter fullscreen mode Exit fullscreen mode

提示:缓存和顺序

  • 如果您重新运行构建,它会很快,因为所有内容都被缓存了。
  • 如果您更改一行并重新运行,则该行及其后的所有内容都不会被缓存
  • 将变化最大的内容放在 Dockerfile 的底部

扩展 DOCKERFILE

使用 nginx 自定义 html 页面的 Dockerfile

FROM nginx:latest # Extends nginx so everything included in that image is included here
WORKDIR /usr/share/nginx/html
COPY index.html index.html
Enter fullscreen mode Exit fullscreen mode

从 Dockerfile 构建镜像

$ docker image build -t nginx-website
Enter fullscreen mode Exit fullscreen mode

运行它

$ docker container run -p 80:80 --rm nginx-website
Enter fullscreen mode Exit fullscreen mode

标记并推送到 Dockerhub

$ docker image tag nginx-website:latest btraversy/nginx-website:latest
Enter fullscreen mode Exit fullscreen mode
$ docker image push bradtraversy/nginx-website
Enter fullscreen mode Exit fullscreen mode

卷 - 在容器 UFS 之外创建特殊位置。用于数据库

绑定挂载 - 将容器路径链接到主机路径

检查卷

$ docker volume ls
Enter fullscreen mode Exit fullscreen mode

清理未使用的卷

$ docker volume prune
Enter fullscreen mode Exit fullscreen mode

拉取mysql镜像进行测试

$ docker pull mysql
Enter fullscreen mode Exit fullscreen mode

检查并查看音量

$ docker image inspect mysql
Enter fullscreen mode Exit fullscreen mode

运行容器

$ docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=True mysql
Enter fullscreen mode Exit fullscreen mode

检查容器内的容量

$ docker container inspect mysql
Enter fullscreen mode Exit fullscreen mode

提示:坐骑

  • 您还将看到 mounts 下的卷
  • 容器在主机上拥有自己独特的位置来存储数据
  • 来源:xxx 是它在主机上的位置

检查卷

$ docker volume ls
Enter fullscreen mode Exit fullscreen mode

例如,没有办法区分 2 个 mysql 容器的卷,所以我们使用命名卷

命名卷(添加 -v 命令)(此处的名称是 mysql-db,可以是任何名称)

$ docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=True -v mysql-db:/var/lib/mysql mysql
Enter fullscreen mode Exit fullscreen mode

检查新命名的卷

docker volume inspect mysql-db
Enter fullscreen mode Exit fullscreen mode

绑定坐骑

  • 无法在 Dockerfile 中使用,在运行时指定(也使用 -v)
  • ...运行-v /Users/brad/stuff:/path/container(mac/linux)
  • ...运行-v //c/Users/brad/stuff:/path/container(windows)

提示:不要输入本地路径,对于工作目录使用 $(pwd):/path/container - 除非您在用户文件夹中,否则在 Windows 上可能无法工作

运行并能够编辑 index.html 文件(本地目录应该有 Dockerfile 和 index.html)

$ docker container run  -p 80:80 -v $(pwd):/usr/share/nginx/html nginx
Enter fullscreen mode Exit fullscreen mode

进入容器并检查

$ docker container exec -it nginx bash
$ cd /usr/share/nginx/html
$ ls -al
Enter fullscreen mode Exit fullscreen mode

您可以在容器中创建一个文件,它也将存在于主机上

$ touch test.txt
Enter fullscreen mode Exit fullscreen mode

Docker 编写

  • 配置容器之间的关系
  • 将我们的 docker 容器运行设置保存在易于阅读的文件中
  • 2 个部分:YAML 文件(docker.compose.yml)+ CLI 工具(docker-compose)

1. docker.compose.yml - 描述以下解决方案

  • 容器
  • 网络

2. docker-compose CLI - 用于使用 YAML 文件进行本地开发/测试自动化

示例撰写文件(来自 Bret Fishers 课程)

version: '2'

# same as
# docker run -p 80:4000 -v $(pwd):/site bretfisher/jekyll-serve

services:
  jekyll:
    image: bretfisher/jekyll-serve
    volumes:
      - .:/site
    ports:
      - '80:4000'
Enter fullscreen mode Exit fullscreen mode

运行

docker-compose up
Enter fullscreen mode Exit fullscreen mode

您可以在后台运行

docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

清理

docker-compose down
Enter fullscreen mode Exit fullscreen mode

Git 仓库:Docker

文章来源:https://dev.to/hasone/docker-cheat-sheet-27po
PREV
为开发人员、设计师、工程师提供无限资源
NEXT
程序员不该做的事情——两年团队工作经验总结