Docker 快速参考指南

一些常用的 Docker 命令参数

目录

以下是 Docker 命令速查表,涵盖 最重要的命令 和从安装到运行容器和清理的 Docker 概念:

docker logo

安装

在 Ubuntu 上

sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
sudo apt install docker-ce
sudo systemctl start docker

安装 Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

一般 Docker 命令

版本和系统信息

docker version          # 显示 Docker CLI 和守护程序版本
docker system info      # 列出有关 Docker 环境的数据
docker help             # 查看帮助索引
docker <command> --help # 查看特定命令的帮助信息

登录和登出

docker login            # 登录到 Docker Hub
docker logout           # 从 Docker Hub 登出

镜像管理

列出镜像

docker images           # 列出所有镜像
docker images -a        # 列出所有镜像,包括中间镜像

拉取镜像

docker pull <image-name:version> # 从 Docker Hub 下载镜像

构建镜像

docker build -t <image-name> . # 从当前目录的 Dockerfile 构建镜像
docker build -f <Dockerfile-path> -t <image-name> . # 从特定的 Dockerfile 构建镜像
docker build --build-arg foo=bar . # 使用构建参数构建镜像
docker build --pull . # 拉取 FROM 指令中引用的镜像的更新版本
docker build --quiet . # 构建镜像时不输出信息

标记和推送镜像

docker tag <local-image-name> <username>/<preferred-image-name>
docker push <username>/<preferred-image-name>

删除镜像

docker rmi <image-name>        # 删除特定镜像
docker image prune             # 删除未使用的镜像
docker image prune -a          # 删除所有未使用的镜像

删除悬空镜像

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

取消镜像标签

docker rmi repository/image-name:tag

容器管理

运行容器

docker run -itd --name <container-name> <image-name> # 以分离模式运行容器
docker run -it -p <host-port>:<docker-port> <image-name> # 带端口映射运行容器
docker run -it --name <container-name> <image-name> # 交互式运行容器

列出容器

docker ps                  # 列出正在运行的容器
docker ps -a               # 列出所有容器
docker ps -s               # 列出带有 CPU 和内存使用情况的正在运行的容器

启动、停止和重启容器

docker start <container-name>   # 启动已停止的容器
docker stop <container-name>    # 停止正在运行的容器
docker restart <container-name> # 重启容器

删除容器

docker rm <container-name>      # 删除已停止的容器
docker rm -f <container-name>   # 强制删除容器
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) # 删除所有容器

删除所有已停止的容器

docker container prune

连接到容器

docker attach <container-name>  # 连接到正在运行的容器
docker exec -it <container-name> bash # 在正在运行的容器中交互式运行命令

检查容器

docker inspect <container-name> # 检查容器
docker logs <container-name>    # 查看容器日志
docker port <container-name>    # 显示容器端口映射

网络管理

docker network ls            # 列出所有网络
docker network create <network-name> # 创建新网络
docker network rm <network-name>    # 删除网络

卷管理

docker volume ls             # 列出所有卷
docker volume create <volume-name> # 创建新卷
docker volume rm <volume-name>    # 删除卷
docker run -v <host-path>:<container-path> <image-name> # 挂载卷

Docker Compose

基本命令

docker-compose up           # 启动 docker-compose.yml 中定义的服务
docker-compose up -d        # 以分离模式启动服务
docker-compose down         # 停止并删除服务
docker-compose ps           # 列出正在运行的服务
docker-compose logs         # 查看服务日志
docker-compose start        # 启动服务
docker-compose stop         # 停止服务
docker-compose pause        # 暂停服务
docker-compose unpause      # 恢复服务

Dockerfile 命令

从 Dockerfile 构建镜像

docker build -t <image-name> <Dockerfile-path> # 从 Dockerfile 构建镜像

示例 Dockerfile

FROM <base-image>
RUN <command>
COPY <source> <destination>
EXPOSE <port>
CMD ["<command>", "<argument>"]

安全和密钥

Docker 密钥

docker secret create <secret-name> <file> # 创建密钥
docker secret ls                         # 列出所有密钥
docker secret rm <secret-name>          # 删除密钥

Docker 安全

  • 使用 Docker 密钥集中管理敏感数据,并安全地将其传输到容器中。
  • 密钥在传输过程中和在 Docker swarm 中存储时都是加密的。

清理

删除未使用的资源

docker system prune          # 删除未使用的数据(镜像、容器、网络、卷)
docker image prune           # 删除未使用的镜像
docker container prune       # 删除未使用的容器
docker network prune         # 删除未使用的网络
docker volume prune          # 删除未使用的卷

删除未标记的镜像

有时在编译大型项目后,docker images 命令会显示如下这种图像:

大量未标记的镜像

要删除这些带有 标签的镜像:

docker rmi $(docker images --filter “dangling=true” -q --no-trunc)

上面的命令已过时且不兼容。dangling=true 参数已弃用。请使用:

docker system prune

它会提示:

警告!这将删除:
	- 所有已停止的容器
	- 所有未被至少一个容器使用的卷
	- 所有未被至少一个容器使用的网络
	- 所有悬空镜像

你可能会决定接受这个警告…

这份速查表涵盖了管理 Docker 容器、镜像、网络、卷等所需的最基本命令和概念。如需深入了解,请参考在线提供的详细指南和教程。

有用的链接