点击上方网络技术干货圈,选择设为星标
优质文章,及时送达
Docker 是一个开源的平台,用于自动化应用程序的部署、扩展和管理。它使得开发者能够打包应用及其依赖项到一个轻量级的容器中,并在任何环境中快速运行。掌握 Docker 的常用命令可以大大提高你的工作效率,尤其是在开发、测试和部署阶段。本文将详细介绍 Docker 的常用命令,涵盖从基本操作到高级使用。
目录:
1. Docker 基础命令
2. 镜像操作
3. 容器操作
4. 网络管理
5. 数据卷管理
6. Docker Compose
7. Docker Swarm
8. Docker 网络管理命令
9. Docker 数据卷管理命令
10. Docker 安全与权限管理
11. Docker 调试与排错
12. Docker 镜像管理命令
13. Docker 容器监控与资源限制
14. Docker 高级功能
15. Docker Compose 命令
16. Docker 网络命令
17. Docker 卷管理命令
18. Docker 容器数据管理
19. Docker 配置管理
20. Docker 资源监控与调优
21. Docker 与云服务集成
22. Docker 安全最佳实践
23. Docker 性能优化
1. Docker 基础命令
1.1 docker --version
docker --version
命令用于查看 Docker 的当前版本信息。确保 Docker 已经正确安装,并且版本满足项目需求。
$ docker --version
Docker version 20.10.7, build f0df350
1.2 docker info
docker info
命令用于显示关于 Docker 的系统级信息,如镜像、容器数量,存储驱动器类型等。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
1.3 docker help
docker help
命令用于显示 Docker 的帮助文档,列出所有可用命令和对应的简短描述。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
1.4 docker system df
docker system df
命令用于显示 Docker 使用的磁盘空间,包括镜像、容器、数据卷等。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
2. 镜像操作
2.1 docker images
docker images
命令用于列出本地存储的所有 Docker 镜像。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
2.2 docker pull
docker pull
命令用于从 Docker 仓库中拉取指定镜像到本地。
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
2.3 docker search
docker search
命令用于在 Docker Hub 上搜索符合条件的镜像。
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
2.4 docker rmi
docker rmi
命令用于删除本地的一个或多个 Docker 镜像。
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
2.5 docker tag
docker tag
命令用于为本地镜像打上一个新的标签(tag),通常用于标记不同的版本。
$ docker tag nginx:latest mynginx:v1
2.6 docker save
docker save
命令用于将指定镜像保存为一个 tar 压缩包,可以用于传输或备份。
$ docker save -o mynginx.tar mynginx:v1
2.7 docker load
docker load
命令用于从一个 tar 包中加载镜像到本地 Docker 库。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
0
2.8 docker history
docker history
命令用于显示镜像的构建历史,包括各个层的创建时间、大小等信息。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
1
2.9 docker inspect
docker inspect
命令用于查看镜像或容器的详细信息,以 JSON 格式输出。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
2
3. 容器操作
3.1 docker run
docker run
命令用于创建并启动一个新的容器。该命令结合了 docker create
和 docker start
。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
3
常用参数:
-d
:后台运行容器。-p
:映射主机端口到容器端口。
3.2 docker start
docker start
命令用于启动一个已经停止的容器。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
4
3.3 docker stop
docker stop
命令用于停止一个正在运行的容器。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
5
3.4 docker restart
docker restart
命令用于重启一个容器。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
6
3.5 docker kill
docker kill
命令用于强制终止一个正在运行的容器。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
7
3.6 docker rm
docker rm
命令用于删除一个已经停止的容器。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
8
3.7 docker ps
docker ps
命令用于列出正在运行的容器。使用 -a
参数可以列出所有容器(包括已停止的)。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
9
3.8 docker exec
docker exec
命令用于在一个正在运行的容器中执行命令。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
0
常用参数:
-it
:以交互模式运行命令。
3.9 docker logs
docker logs
命令用于查看容器的日志输出。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
1
3.10 docker commit
docker commit
命令用于从一个容器创建一个新的镜像。该镜像会包含当前容器的所有修改。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
2
3.11 docker cp
docker cp
命令用于在容器和主机之间复制文件或目录。这个命令非常有用,尤其是在需要从容器内取出生成的文件或将主机上的文件拷贝到容器内进行处理时。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
3
示例: 如果需要从容器中提取日志文件到主机,可以使用如下命令:
$ docker help
4
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
3.12 docker rename
docker rename
命令用于重命名一个已经存在的容器。这个命令可以帮助你更好地组织和管理你的容器。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
5
示例: 如果你有一个名为
web_server
的容器,想将其重命名为nginx_server
,可以使用如下命令:$ docker help
6
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
3.13 docker pause
docker pause
命令用于暂停一个容器中的所有进程。暂停的容器不会占用 CPU 资源,适合在需要临时停止某个容器而不希望其完全停止的场景下使用。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
7
示例: 暂停一个容器以释放 CPU 资源:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
8
3.14 docker unpause
docker unpause
命令用于恢复一个被暂停的容器中的所有进程,使其重新运行。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
9
示例: 恢复一个被暂停的容器:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
0
4. 网络管理
Docker 提供了灵活的网络管理功能,允许你在容器之间建立连接,或将容器连接到外部网络。以下命令将帮助你管理 Docker 网络。
4.1 docker network ls
docker network ls
命令用于列出 Docker 中所有可用的网络。默认情况下,Docker 会创建三种网络:bridge、host 和 none。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
1
解释: bridge
: 默认的网络类型,Docker 容器通过它可以相互通信。host
: 容器与主机共享网络栈。none
: 容器无网络连接。
4.2 docker network create
docker network create
命令用于创建一个新的网络。你可以为不同的应用场景创建独立的网络。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
2
示例: 创建一个名为 my_network
的自定义网络:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
2
4.3 docker network inspect
docker network inspect
命令用于查看某个网络的详细信息。该命令将输出网络的配置及连接到该网络的容器信息。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
4
示例: 查看 my_network
的详细信息:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
4
4.4 docker network connect
docker network connect
命令用于将一个容器连接到一个已经存在的网络中。这允许你动态地改变容器的网络配置。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
6
示例: 将 my_container
连接到my_network
网络中:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
6
4.5 docker network disconnect
docker network disconnect
命令用于将一个容器从网络中断开。断开后,该容器将无法与网络中的其他容器通信。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
8
示例: 将 my_container
从my_network
网络中断开:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
8
4.6 docker network rm
docker network rm
命令用于删除一个 Docker 网络。该网络必须没有正在连接的容器,否则删除操作将失败。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
0
示例: 删除 my_network
网络:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
0
5. 数据卷管理
Docker 数据卷用于持久化存储数据。数据卷可以在容器之间共享,并且在删除容器时不会丢失数据。以下命令将帮助你管理 Docker 的数据卷。
5.1 docker volume ls
docker volume ls
命令用于列出所有 Docker 数据卷。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
2
解释: local
: Docker 的默认存储驱动。my_volume
: 自定义的数据卷名称。
5.2 docker volume create
docker volume create
命令用于创建一个新的数据卷。该数据卷可以用于多个容器之间共享数据。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
3
示例: 创建一个名为 my_volume
的数据卷:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
3
5.3 docker volume inspect
docker volume inspect
命令用于查看数据卷的详细信息。包括存储路径、驱动类型以及挂载的容器等。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
5
示例: 查看 my_volume
数据卷的详细信息:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
5
5.4 docker volume rm
docker volume rm
命令用于删除一个数据卷。注意,如果有容器在使用该数据卷,删除操作将失败。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
7
示例: 删除 my_volume
数据卷:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
7
5.5 docker volume prune
docker volume prune
命令用于删除所有未使用的数据卷。这是一个非常有用的命令,用于清理未使用的资源。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
9
示例: 删除所有未使用的数据卷:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
9
6. Docker Compose
Docker Compose 是一个用于定义和管理多容器 Docker 应用的工具。通过一个 YAML 文件,你可以定义应用的服务、网络和数据卷,并使用一条命令来启动或关闭整个应用。以下是一些常用的 Docker Compose 命令。
6.1 docker-compose up
docker-compose up
命令用于构建、启动并运行定义在 docker-compose.yml
文件中的所有服务。
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
1
常用参数:
-d
: 后台运行服务。--build
: 在启动服务前重新构建镜像。示例: 以后台方式启动所有服务:
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
2
6.2 docker-compose down
docker-compose down
命令用于停止并移除定义在 docker-compose.yml
文件中的所有服务和网络。
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
3
常用参数:
--volumes
: 移除所有服务使用的数据卷。--rmi all
: 删除所有与服务关联的镜像。示例: 停止服务并删除数据卷:
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
4
6.3 docker-compose build
docker-compose build
命令用于构建或重新构建服务所需的镜像。
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
5
常用参数:
--no-cache
: 不使用缓存来构建镜像。示例: 构建服务镜像且不使用缓存:
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
6
6.4 docker-compose start
docker-compose start
命令用于启动已经创建但未运行的服务容器。
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
7
示例: 启动所有定义的服务:
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
7
6.5 docker-compose stop
docker-compose stop
命令用于停止运行中的服务容器,但不会删除它们。
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
9
示例: 停止所有正在运行
的服务容器:
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
9
6.6 docker-compose restart
docker-compose restart
命令用于重新启动运行中的服务容器。它相当于依次执行 docker-compose stop
和 docker-compose start
。
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
1
示例: 重启所有服务容器:
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
1
6.7 docker-compose ps
docker-compose ps
命令用于列出与 docker-compose.yml
文件关联的所有服务容器的状态。这类似于 docker ps
,但仅显示与当前 Compose 项目相关的容器。
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
3
示例: 列出当前项目中所有服务容器的状态:
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
3
6.8 docker-compose logs
docker-compose logs
命令用于查看所有服务容器的日志。你可以通过 -f
选项实时查看日志输出,类似于 tail -f
。
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
5
常用参数:
-f
: 实时跟踪日志输出。--tail="N"
: 只显示最后 N 行日志。示例: 实时查看所有服务容器的日志:
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
6
6.9 docker-compose exec
docker-compose exec
命令用于在运行中的服务容器内执行命令。这类似于 docker exec
,但专门针对 Docker Compose 环境。
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
7
示例: 在名为 web
的服务容器中启动一个交互式的 bash shell:
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
8
6.10 docker-compose run
docker-compose run
命令用于启动一个新容器并在其中执行指定命令。与 docker-compose exec
不同的是,docker-compose run
会创建一个新容器,而不是在现有容器中执行命令。
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
9
常用参数:
--rm
: 在执行完命令后自动移除容器。-d
: 在后台运行命令。示例: 在名为
db
的服务容器中运行psql
命令并连接到数据库:
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
0
6.11 docker-compose scale
docker-compose scale
命令用于扩展(或缩减)服务容器的数量。此命令已被弃用,建议使用 docker-compose up --scale
替代。
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
1
示例: 扩展 web
服务的容器数量到 3 个实例:
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
2
6.12 docker-compose config
docker-compose config
命令用于验证和查看当前 Compose 文件的配置信息。它会显示所有配置选项,并检查 YAML 语法的正确性。
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
3
常用参数:
--services
: 只列出服务名称。--volumes
: 只列出数据卷。示例: 验证
docker-compose.yml
文件的配置并查看详细信息:
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
3
7. Docker Swarm
Docker Swarm 是 Docker 的原生集群管理工具。它可以将多台 Docker 主机聚合成一个集群,并允许你在这个集群上部署和管理应用。以下是一些常用的 Docker Swarm 命令。
7.1 docker swarm init
docker swarm init
命令用于初始化 Docker 主机并将其配置为 Swarm 管理器(Manager)。Swarm 管理器是集群的控制中心,负责管理和调度服务。
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
5
常用参数:
--advertise-addr
: 指定管理器节点的 IP 地址。示例: 初始化一个 Swarm 集群并指定管理器节点的 IP 地址:
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
6
7.2 docker swarm join
docker swarm join
命令用于将一台 Docker 主机加入到一个已经存在的 Swarm 集群中。加入集群后,该主机将作为一个节点来运行容器。
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
7
示例: 将一台 Docker 主机加入到 Swarm 集群:
$ docker rmi nginx:latest
8
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
7.3 docker node ls
docker node ls
命令用于列出 Swarm 集群中的所有节点。只有在管理器节点上执行该命令才会显示节点列表。
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
9
示例: 列出当前 Swarm 集群中的所有节点:
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
9
7.4 docker node inspect
docker node inspect
命令用于查看 Swarm 集群中某个节点的详细信息。
$ docker tag nginx:latest mynginx:v1
1
示例: 查看某个节点的详细信息:
$ docker tag nginx:latest mynginx:v1
2
7.5 docker node update
docker node update
命令用于更新 Swarm 集群中某个节点的属性,例如角色或标签。
$ docker tag nginx:latest mynginx:v1
3
常用参数:
--availability
: 设置节点的可用性(active, pause, drain)。--role
: 设置节点的角色(manager, worker)。示例: 将某个节点设置为管理器角色:
$ docker tag nginx:latest mynginx:v1
4
7.6 docker node rm
docker node rm
命令用于将一个节点从 Swarm 集群中移除。移除节点后,该节点将不再参与容器的调度和运行。
$ docker tag nginx:latest mynginx:v1
5
示例: 从 Swarm 集群中移除某个节点:
$ docker tag nginx:latest mynginx:v1
6
7.7 docker service create
docker service create
命令用于在 Swarm 集群中创建一个服务。该服务可以在多个节点上运行多个容器实例。
$ docker tag nginx:latest mynginx:v1
7
常用参数:
--replicas
: 设置服务的副本数量。--network
: 指定服务要连接的网络。示例: 在 Swarm 集群中创建一个名为
web
的服务,并运行 3 个副本:
$ docker tag nginx:latest mynginx:v1
8
7.8 docker service ls
docker service ls
命令用于列出 Swarm 集群中所有运行的服务。它会显示服务的名称、模式、运行中的任务数和镜像等信息。
$ docker tag nginx:latest mynginx:v1
9
示例: 列出所有服务:
$ docker tag nginx:latest mynginx:v1
9
7.9 docker service ps
docker service ps
命令用于显示某个服务的任务列表。任务是服务的具体运行实例,每个任务对应一个容器。
$ docker save -o mynginx.tar mynginx:v1
1
示例: 查看 web
服务的所有任务:
$ docker save -o mynginx.tar mynginx:v1
2
7.10 docker service scale
docker service scale
命令用于动态调整服务的副本数量。在 Swarm 集群中,扩展或缩减服务的副本非常方便。
$ docker save -o mynginx.tar mynginx:v1
3
示例: 将 web
服务的副本数量调整为 5 个:
$ docker save -o mynginx.tar mynginx:v1
4
7.11 docker service update
docker service update
命令用于更新服务的配置。可以修改服务使用的镜像、环境变量、资源限制等。
$ docker save -o mynginx.tar mynginx:v1
5
常用参数:
--force
: 强制更新,即使没有变化。--env-add
: 添加环境变量。示例: 更新
web
服务使用的新镜像:
$ docker save -o mynginx.tar mynginx:v1
6
7.12 docker service rm
docker service rm
命令用于删除 Swarm 集群中的某个服务。删除服务后,所有与该服务相关的容器将被停止并移除。
$ docker save -o mynginx.tar mynginx:v1
7
示例: 删除名为 web
的服务:
$ docker save -o mynginx.tar mynginx:v1
8
8. Docker 网络管理命令
Docker 支持多种网络模式,用于连接容器和提供服务。以下是 Docker 网络管理的常用命令。
8.1 docker network ls
docker network ls
命令用于列出所有 Docker 网络。Docker 默认提供了几个网络,如 bridge
、host
和 none
。
$ docker save -o mynginx.tar mynginx:v1
9
示例: 列出所有 Docker 网络:
$ docker save -o mynginx.tar mynginx:v1
9
8.2 docker network create
docker network create
命令用于创建一个新的 Docker 网络。你可以指定网络的驱动程序(如 bridge
、overlay
)以及其他选项。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
01
常用参数:
-d
: 指定网络驱动程序(如bridge
、overlay
)。--subnet
: 设置自定义子网。--gateway
: 设置自定义网关。示例: 创建一个名为
my_bridge
的桥接网络:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
02
8.3 docker network inspect
docker network inspect
命令用于查看指定 Docker 网络的详细信息,包括网络 ID、驱动程序、容器连接等。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
03
示例: 查看 my_bridge
网络的详细信息:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
04
8.4 docker network connect
docker network connect
命令用于将某个容器连接到指定的 Docker 网络。这样容器就可以与网络中的其他容器通信。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
05
示例: 将容器 nginx_container
连接到my_bridge
网络:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
06
8.5 docker network disconnect
docker network disconnect
命令用于将某个容器从指定的 Docker 网络中断开。断开后,容器将无法与该网络中的其他容器通信。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
07
示例: 将容器 nginx_container
从my_bridge
网络中断开:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
08
8.6 docker network rm
docker network rm
命令用于删除指定的 Docker 网络。删除网络前,必须先断开与该网络相关联的所有容器。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
09
示例: 删除名为 my_bridge
的网络:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
10
9. Docker 数据卷管理命令
数据卷是 Docker 中用于持久化和共享数据的重要机制。以下是常用的 Docker 数据卷管理命令。
9.1 docker volume ls
docker volume ls
命令用于列出所有 Docker 数据卷。数据卷可以在多个容器之间共享,并且数据在容器删除后依然存在。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
11
示例: 列出所有 Docker 数据卷:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
11
9.2 docker volume create
docker volume create
命令用于创建一个新的 Docker 数据卷。你可以为数据卷指定名称,也可以让 Docker 自动生成。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
13
示例: 创建一个名为 my_data
的数据卷:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
14
9.3 docker volume inspect
docker volume inspect
命令用于查看指定数据卷的详细信息,包括卷名、挂载点、创建时间等。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
15
示例: 查看 my_data
数据卷的详细信息:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
16
9.4 docker volume rm
docker volume rm
命令用于删除指定的 Docker 数据卷。删除数据卷前,必须先确保没有容器在使用它。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
17
示例: 删除名为 my_data
的数据卷:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
18
9.5 docker volume prune
docker volume prune
命令用于删除所有未使用的 Docker 数据卷。这有助于清理系统中不再需要的数据卷,从而释放磁盘空间。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
9
示例: 删除所有未使用的 Docker 数据卷:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
9
10. Docker 安全与权限管理
Docker 提供了一些命令来管理容器的安全性和权限设置,确保容器化应用在受控和安全的环境中运行。
10.1 docker exec --user
docker exec
命令的 --user
选项允许你以指定用户身份在容器内执行命令。这对于执行特定用户权限下的任务非常有用。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
21
示例: 以 nginx
用户身份在容器nginx_container
内执行bash
命令:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
22
10.2 docker run --cap-add
docker run
命令的 --cap-add
选项允许你向容器添加特定的 Linux 功能(capabilities)。这在需要赋予容器特定权限时非常有用。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
23
示例: 运行一个带有 NET_ADMIN
功能的容器:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
24
10.3 docker run --security-opt
docker run
命令的 --security-opt
选项允许你配置容器的安全选项,例如应用 AppArmor 或 SELinux 配置文件。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
25
示例: 运行一个应用了 seccomp
配置文件的容器:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
26
11. Docker 调试与排错
Docker 提供了许多命令和工具,帮助用户调试和排查容器问题,确保容器化应用的稳定运行。
11.1 docker logs
docker logs
命令用于查看容器的标准输出日志。日志对于调试容器内的应用非常重要。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
27
常用参数:
-f
: 实时跟踪日志输出。--tail
: 只显示最后 N 行日志。示例: 实时查看容器
nginx_container
的日志:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
28
11.2 docker inspect
docker inspect
命令用于查看容器或镜像的详细信息。该命令会返回一个包含所有容器配置信息的 JSON 对象。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
29
示例: 查看容器 nginx_container
的详细信息:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
30
11.3 docker events
docker events
命令用于实时监听 Docker 守护进程的事件流。这包括容器启动、停止、网络连接等事件。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
31
示例: 实时监听 Docker 的所有事件:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
31
11.4 docker stats
docker stats
命令用于显示容器的实时资源使用情况,包括 CPU、内存、网络和存储 I/O。这有助于监控容器的性能。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
33
示例: 实时监控所有容器的资源使用情况:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
33
11.5 docker top
docker top
命令用于显示容器内运行的进程。这类似于 Linux 的top
命令,能够帮助你查看容器内的活动进程,并分析其资源消耗情况。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
35
示例: 查看容器 nginx_container
内的活动进程:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
36
11.6 docker diff
docker diff
命令用于显示容器文件系统的更改。通过这个命令,你可以查看容器启动后文件系统中被修改、添加或删除的文件。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
37
示例: 查看容器 nginx_container
内文件系统的更改:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
38
11.7 docker ps --filter
docker ps
命令的 --filter
选项允许你通过特定条件来筛选容器。这对于管理大量容器时非常有用。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
39
常用过滤条件:
status=running
: 筛选正在运行的容器。name=<CONTAINER-NAME>
: 筛选特定名称的容器。label=<LABEL>
: 筛选带有特定标签的容器。示例: 仅显示带有
web
标签的运行中容器:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
40
12. Docker 镜像管理命令
Docker 镜像是容器的基础,管理镜像是 Docker 使用中的重要部分。以下是一些常用的 Docker 镜像管理命令。
12.1 docker images
docker images
命令用于列出本地 Docker 主机上的所有镜像。它显示了镜像的仓库名、标签、镜像 ID、创建时间和大小。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
41
常用参数:
-a
: 显示所有镜像,包括中间层镜像。--filter
: 按条件筛选镜像。示例: 列出本地所有 Docker 镜像:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
41
12.2 docker rmi
docker rmi
命令用于删除一个或多个本地镜像。删除镜像前,必须先确保没有容器在使用它。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
43
示例: 删除名为 nginx:latest
的镜像:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
44
12.3 docker tag
docker tag
命令用于为已有的镜像创建一个新的标签。标签可以帮助你更好地管理和区分镜像版本。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
45
示例: 为 nginx:latest
镜像创建一个新的标签nginx:stable
:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
46
12.4 docker save
docker save
命令用于将一个或多个 Docker 镜像保存为 tar 包文件。保存的镜像可以通过 docker load
命令导入到其他 Docker 主机中。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
47
示例: 将 nginx:latest
镜像保存为nginx_latest.tar
文件:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
48
12.5 docker load
docker load
命令用于从一个 tar 包文件中导入 Docker 镜像。这个命令通常与 docker save
搭配使用,便于在不同主机之间传输镜像。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
49
示例: 从 nginx_latest.tar
文件中加载 Docker 镜像:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
50
12.6 docker import
docker import
命令用于从一个 tar 包文件中导入文件系统,并创建为 Docker 镜像。与 docker load
不同的是,docker import
允许你从其他容器格式(如 .tar
、.tar.gz
等)创建新的 Docker 镜像。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
51
示例: 从 ubuntu.tar
文件中导入文件系统,并创建为myubuntu
镜像:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
52
12.7 docker history
docker history
命令用于查看某个镜像的构建历史。它显示了镜像每一层的创建指令、大小和创建时间。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
53
示例: 查看 nginx:latest
镜像的构建历史:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
54
12.8 docker commit
docker commit
命令用于将一个运行中的容器保存为新的 Docker 镜像。你可以为这个新镜像指定标签,并添加描述信息。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
55
常用参数:
-m
: 为新镜像添加提交信息。-a
: 为新镜像指定作者信息。示例: 将容器
nginx_container
保存为新的mynginx:latest
镜像:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
56
13. Docker 容器监控与资源限制
Docker 提供了多种方式来监控容器的资源使用情况,并对容器施加资源限制,以确保系统的稳定性和性能。
13.1 docker stats
docker stats
命令显示所有容器的实时资源使用情况,包括 CPU、内存、网络和存储 I/O。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
33
示例: 实时监控所有容器的资源使用情况:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
33
13.2 docker update
docker update
命令用于动态调整运行中容器的资源限制,如 CPU 和内存。你可以对多个容器同时进行资源调整。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
59
常用参数:
--cpu-shares
: 调整容器的 CPU 共享值。--memory
: 设置容器的内存限制。--restart
: 调整容器的重启策略。示例: 将容器
nginx_container
的内存限制调整为 512MB:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
60
13.3 docker run --memory
docker run
命令的 --memory
选项用于在启动容器时设置其内存限制。这在资源有限的系统中非常有用。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
61
示例: 运行一个内存限制为 256MB 的容器:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
62
13.4 docker run --cpus
docker run
命令的 --cpus
选项用于在启动容器时设置其 CPU 限制。你可以指定容器可以使用的 CPU 数量。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
63
示例: 运行一个 CPU 限制为 0.5(即最多使用一半 CPU 资源)的容器:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
64
14. Docker 高级功能
除了基本的容器管理命令,Docker 还提供了一些高级功能,用于提升容器化应用的性能、灵活性和安全性。
14.1 docker checkpoint
docker checkpoint
命令用于为运行中的容器创建检查点。这允许你将容器的当前状态保存下来,并在未来恢复。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
65
示例: 为容器 nginx_container
创建一个名为checkpoint1
的检查点:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
66
14.2 docker restore
docker restore
命令用于从检查点恢复容器的运行状态。这对于长时间运行的任务或需要中断恢复的应用非常有用。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
67
示例: 从 checkpoint1
检查点恢复容器nginx_container
:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
68
14.3 docker exec --privileged
docker exec
命令的 --privileged
选项允许你在容器中执行命令时提升权限,类似于 Linux 系统中的 sudo
。这对于需要访问特权资源或执行高级操作的场景非常有用。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
69
示例: 在容器 nginx_container
中以特权模式执行bash
交互式命令行:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
70
14.4 docker run --network
docker run
命令的 --network
选项允许你在启动容器时指定其网络模式。Docker 支持多种网络模式,包括 bridge(桥接网络)、host(主机网络)、none(无网络)以及用户自定义网络。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
71
常用网络模式:
bridge
: 默认网络模式,容器间通过 NAT 方式通信。host
: 容器与宿主机共享网络栈,性能较高但隔离性较差。none
: 容器没有网络接口。overlay
: 用于多主机网络,通过 Docker Swarm 或 Kubernetes 管理。示例: 运行一个使用 host 网络模式的容器:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
72
14.5 docker run --security-opt
docker run
命令的 --security-opt
选项允许你在启动容器时设置安全选项。这些选项包括 SELinux、AppArmor 配置等,用于增强容器的安全性。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
73
示例: 运行一个禁用所有特权的容器:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
74
14.6 docker build --squash
docker build
命令的 --squash
选项用于在构建镜像时将多个层合并为一层,从而减少镜像的大小。这在镜像部署时能节省带宽和存储空间。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
75
示例: 构建一个压缩层的 Docker 镜像:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
76
14.7 docker build --no-cache
docker build
命令的 --no-cache
选项用于在构建镜像时不使用缓存层。这确保了每次构建都会拉取最新的基础镜像和依赖项。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
77
示例: 构建一个不使用缓存的 Docker 镜像:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
78
14.8 docker secret
docker secret
命令用于管理 Docker Swarm 集群中的敏感数据(如密码、API 密钥等)。你可以使用这个命令创建、查看、更新和删除集群中的密钥。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
79
常用子命令:
create
: 创建一个新密钥。ls
: 列出所有密钥。rm
: 删除一个密钥。inspect
: 查看密钥的详细信息。示例: 创建一个名为
my_secret
的新密钥:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
80
14.9 docker service update --replicas
docker service update
命令的 --replicas
选项用于动态调整 Swarm 服务的副本数量。这在扩展或缩减服务时非常有用。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
81
示例: 将服务 web_service
的副本数量调整为 5:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
82
15. Docker Compose 命令
Docker Compose 是用于定义和管理多容器 Docker 应用的工具。它通过 docker-compose.yml
文件来描述应用的服务、网络和卷,并提供了一系列命令来管理这些服务。
15.1 docker-compose up
docker-compose up
命令用于启动由 docker-compose.yml
文件定义的所有服务。如果服务尚未构建,up
命令会先构建它们。
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
1
常用参数:
-d
: 在后台模式启动服务。--build
: 强制重新构建服务镜像。--force-recreate
: 强制重新创建容器。示例: 在后台模式启动所有服务:
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
2
15.2 docker-compose down
docker-compose down
命令用于停止并删除由 docker-compose.yml
文件定义的所有服务和网络。
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
3
常用参数:
--volumes
: 删除服务所使用的所有数据卷。--rmi
: 删除服务所使用的镜像。示例: 停止并删除所有服务和网络,同时删除数据卷:
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
4
15.3 docker-compose ps
docker-compose ps
命令用于显示由 docker-compose.yml
文件定义的所有服务的状态。它显示了服务的名称、命令、状态、端口等信息。
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
3
示例: 显示所有服务的状态:
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
3
15.4 docker-compose logs
docker-compose logs
命令用于查看由 docker-compose.yml
文件定义的所有服务的日志。这对于调试和监控服务运行情况非常有帮助。
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
5
常用参数:
-f
: 实时跟踪日志输出。--tail
: 只显示最近的日志行数。示例: 实时跟踪所有服务的日志输出:
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
6
15.5 docker-compose build
docker-compose build
命令用于根据 docker-compose.yml
文件重新构建服务镜像。这通常用于更新基础镜像或代码更改后的重新构建。
$ docker pull nginx:latest
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
5
常用参数:
--no-cache
: 不使用缓存构建镜像。--pull
: 始终拉取最新的基础镜像。示例: 使用最新的基础镜像重新构建服务:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
92
15.6 docker-compose exec
docker-compose exec
命令允许你在指定的服务容器内执行命令。与 docker exec
类似,这对于在运行中的服务内进行调试非常有用。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
93
示例: 在 web
服务容器内打开一个bash
交互式命令行:
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12345 [OK]
8
15.7 docker-compose scale
docker-compose scale
命令用于调整服务的副本数量。与 Swarm 模式下的 docker service update --replicas
类似,这对于横向扩展应用非常有用。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
95
示例: 将 web
服务的副本数量调整为 3:
$ docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:ae2feff98a0c...
2
16. Docker 网络命令
Docker 提供了强大的网络管理功能,你可以使用这些命令创建、管理和监控 Docker 网络,从而为容器化应用提供隔离和连接。
16.1 docker network ls
docker network ls
命令用于列出所有 Docker 网络。它显示了网络的名称、ID、驱动程序类型和范围(local 或 global)。
$ docker save -o mynginx.tar mynginx:v1
9
示例: 列出所有 Docker 网络:
$ docker save -o mynginx.tar mynginx:v1
9
16.2 docker network create
docker network create
命令用于创建一个新的 Docker 网络。你可以为网络指定名称和驱动程序。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
99
常用驱动程序:
bridge
: 默认驱动程序,适用于单机网络。overlay
: 适用于跨主机的 Swarm 集群网络。macvlan
: 允许容器拥有自己的 MAC 地址并与主机网络进行直接通信。host
: 使用主机的网络栈(通常用于高性能网络)。示例: 创建一个名为
my_network
的桥接网络:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
00
16.3 docker network rm
docker network rm
命令用于删除一个或多个 Docker 网络。在删除网络之前,请确保没有容器在使用这些网络。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
01
示例: 删除名为 my_network
的网络:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
0
16.4 docker network inspect
docker network inspect
命令用于查看 Docker 网络的详细信息,包括网络配置、已连接的容器、IP 地址等。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
03
示例: 查看名为 my_network
的网络详细信息:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 5 2.34GB 1.75GB (75%)
Containers 5 1 300MB 250MB (83%)
Local Volumes 3 2 500MB 100MB (20%)
4
16.5 docker network connect
docker network connect
命令用于将一个容器连接到一个 Docker 网络。这允许容器通过指定的网络与其他容器进行通信。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
05
示例: 将容器 nginx_container
连接到my_network
网络:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
06
16.6 docker network disconnect
docker network disconnect
命令用于将一个容器从指定的 Docker 网络中断开。这有助于管理网络连接和隔离容器。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
07
示例: 将容器 nginx_container
从my_network
网络中断开:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
08
17. Docker 卷管理命令
Docker 卷用于持久化和共享容器数据。以下是一些常用的 Docker 卷管理命令。
17.1 docker volume ls
docker volume ls
命令用于列出所有 Docker 卷。它显示了卷的名称和驱动程序。
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
11
示例: 列出所有 Docker 卷:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
11
17.2 docker volume create
docker volume create
命令用于创建一个新的 Docker 卷。你可以为卷指定名称和驱动程序。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
11
示例: 创建一个名为 my_volume
的卷:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
3
17.3 docker volume inspect
docker volume inspect
命令用于查看 Docker 卷的详细信息,包括卷的驱动程序、挂载点、创建时间等。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
13
示例: 查看名为 my_volume
的卷详细信息:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
5
17.4 docker volume rm
docker volume rm
命令用于删除一个或多个 Docker 卷。在删除卷之前,请确保没有容器在使用这些卷。
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
15
示例: 删除名为 my_volume
的卷:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
7
17.5 docker volume prune
docker volume prune
命令用于删除所有未被使用的 Docker 卷。这个命令有助于清理系统中的旧卷,释放存储空间。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
9
示例: 删除所有未使用的 Docker 卷:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 2 days ago 133MB
9
18. Docker 容器数据管理
Docker 提供了管理容器数据的功能,包括挂载卷、绑定挂载和配置数据目录。
18.1 数据卷(Volumes)
数据卷是 Docker 提供的持久化数据机制。它们能够在容器生命周期之外保留数据,并且可以在多个容器之间共享。
创建和挂载数据卷:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
19
示例: 使用名为 my_volume
的卷挂载到容器的/data
目录:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
20
18.2 绑定挂载(Bind Mounts)
绑定挂载将主机文件系统中的目录或文件挂载到容器内。这允许容器访问主机文件系统中的特定路径。
创建和挂载绑定挂载:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
21
示例: 将主机的 /host/data
目录挂载到容器的/data
目录:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
22
18.3 Dockerfile 中的数据卷
在 Dockerfile
中,你可以使用 VOLUME
指令定义容器内的数据卷。这将创建一个匿名卷,并将其挂载到容器的指定目录。
示例: 在 Dockerfile
中定义数据卷:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
23
使用: 构建镜像并运行容器:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
24
18.4 数据卷容器(Data Containers)
数据卷容器是只包含数据卷的容器。其他容器可以通过 --volumes-from
选项将数据卷从数据卷容器挂载过来。这种方法用于在多个容器之间共享数据。
创建数据卷容器:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
25
使用数据卷容器:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
26
19. Docker 配置管理
Docker 提供了多种方式来管理配置,包括配置文件、环境变量和 secrets。以下是一些管理 Docker 配置的方法。
19.1 配置文件
Docker 容器可以通过挂载配置文件来管理应用配置。你可以将主机上的配置文件挂载到容器内,从而实现配置的管理和更新。
示例: 将主机的 /host/config
文件夹挂载到容器的/etc/config
目录:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
27
19.2 环境变量
你可以通过 -e
选项在运行容器时设置环境变量。这些环境变量可以用于配置容器内的应用。
示例: 设置环境变量 ENV_VAR
并运行容器:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
28
19.3 Docker secrets
Docker secrets 适用于 Swarm 模式中的敏感数据管理。你可以创建 secrets 并将它们提供给服务,从而实现对敏感数据的安全管理。
创建 secret:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
80
在服务中使用 secret:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
30
20. Docker 资源监控与调优
Docker 提供了一些工具和命令来监控容器的资源使用情况,并对容器进行性能调优。
20.1 资源限制
你可以使用 docker run
命令的 --memory
和 --cpus
选项来限制容器的内存和 CPU 使用。
示例: 限制容器的内存为 512MB 和 CPU 使用为 0.5 核:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
31
20.2 监控工具
Docker 允许你使用第三方监控工具来跟踪容器的资源使用情况。一些常见的监控工具包括 Prometheus、Grafana 和 Datadog。
使用 Docker stats:
$ docker info
...
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 10
...
33
这个命令会显示所有容器的实时资源使用情况,包括 CPU、内存、网络和 I/O。
集成 Datadog:
Datadog 提供了 Docker 监控的完整解决方案,包括集成 Docker 的 Agent 来跟踪容器的指标和日志。
安装 Datadog Agent:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
33
使用 cAdvisor:
cAdvisor 是一个开源工具,可以提供容器的详细性能数据,如 CPU、内存、网络和磁盘 I/O。
启动 cAdvisor:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
34
访问 http://localhost:8080
可以查看容器的性能数据。
20.3 性能调优
调整 I/O 性能:
对于高性能 I/O 密集型应用,你可以使用 Docker 的存储驱动(如 overlay2
)和配置卷来优化性能。
优化网络性能:
调整 Docker 网络设置,使用自定义网络驱动(如 macvlan
)来提高网络性能。配置合理的网络策略也有助于改善性能。
CPU 和内存限制:
为容器设置适当的 CPU 和内存限制,避免资源争用,提高容器性能。
设置 CPU 限制:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
35
设置内存限制:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
36
21. Docker 与云服务集成
Docker 可以与各种云服务平台集成,提供更强大的容器管理和自动化功能。
21.1 Docker 与 AWS
ECS (Elastic Container Service):
AWS ECS 是一种高性能容器管理服务,支持 Docker 容器的部署和扩展。可以使用 AWS CLI 和 ECS 控制台来管理容器服务。
创建 ECS 集群:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
37
部署服务到 ECS:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
38
ECR (Elastic Container Registry):
AWS ECR 是一个托管 Docker 镜像的服务。可以将镜像推送到 ECR 并在 ECS 中使用。
登录 ECR:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
39
推送镜像到 ECR:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
40
21.2 Docker 与 Azure
Azure Container Instances (ACI):
Azure ACI 提供了无服务器容器服务,适用于快速运行 Docker 容器。
创建 ACI 实例:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
41
Azure Kubernetes Service (AKS):
AKS 是 Azure 的托管 Kubernetes 服务,支持部署和管理 Docker 容器。
创建 AKS 集群:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
42
部署到 AKS:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
43
21.3 Docker 与 Google Cloud
Google Kubernetes Engine (GKE):
GKE 是 Google Cloud 提供的托管 Kubernetes 服务,支持 Docker 容器的部署和管理。
创建 GKE 集群:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
44
部署到 GKE:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
43
Google Container Registry (GCR):
GCR 是 Google Cloud 提供的托管 Docker 镜像服务。
登录 GCR:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
46
推送镜像到 GCR:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
47
22. Docker 安全最佳实践
确保 Docker 容器的安全性对于保护应用和数据至关重要。以下是一些 Docker 安全最佳实践。
22.1 使用非 root 用户
容器应使用非 root 用户运行,以减少潜在的安全风险。可以通过 Dockerfile 的 USER
指令设置容器用户。
示例:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
48
22.2 限制容器权限
使用 Docker 的安全选项,如 --cap-drop
和 --security-opt
,来限制容器的权限。
示例:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
49
22.3 定期扫描镜像
使用工具如 Docker Bench for Security 和 Trivy 定期扫描 Docker 镜像,以发现潜在的漏洞和安全问题。
使用 Trivy 扫描镜像:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
50
22.4 更新和修补
定期更新 Docker 和容器镜像,确保使用最新的安全修补程序和版本。
示例:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
51
22.5 使用 Docker Content Trust
启用 Docker Content Trust 以确保你从 Docker Hub 获取的镜像是经过签名的,防止受到篡改。
启用 Docker Content Trust:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
52
23. Docker 性能优化
为了确保 Docker 容器的最佳性能,可以对 Docker 进行优化。以下是一些性能优化的建议。
23.1 优化镜像大小
减少镜像层数:
使用
RUN
指令合并命令,减少镜像层数,优化镜像大小。示例:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
53
选择合适的基础镜像:
选择体积小且功能足够的基础镜像,例如使用
alpine
代替ubuntu
。示例:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
54
23.2 优化容器启动时间
预编译应用:
在构建镜像时预编译应用,减少容器启动时的编译时间。
示例:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
55
减少容器启动脚本的复杂度:
避免在启动脚本中执行复杂的操作,减少容器启动时间。
23.3 配置资源限制
设置适当的 CPU 和内存限制:
为容器设置合理的 CPU 和内存限制,确保容器在资源使用上的平衡。
示例:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
56
23.4 使用 Docker Compose 进行服务管理
定义服务:
使用 Docker Compose 文件来定义和管理多个服务,从而提高容器的组织性和性能管理能力。
示例:
$ docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
...
57
---END--- 重磅!网络技术干货圈-技术交流群已成立 扫码可添加小编微信,申请进群。 一定要备注:工种+地点+学校/公司+昵称(如网络工程师+南京+苏宁+猪八戒),根据格式备注,可更快被通过且邀请进群 ▲长按加群
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...