1. Docker 镜像管理
1.1 构建 Docker 镜像
-
命令:
docker build
-
目的:从
Dockerfile
构建一个新的 Docker 镜像。 -
示例:
docker build -t my-app .
解释:从当前目录(包含 Dockerfile)构建一个名为
my-app
的镜像。 -
注意事项:
- 确保
Dockerfile
格式正确。 - 使用
-t
标签指定镜像名称。
- 确保
1.2 列出 Docker 镜像
-
命令:
docker images
-
目的:查看本地 Docker 镜像列表。
-
示例:
docker images
输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZE my-app latest a2b5c6d8d2b9 2 days ago 500MB
1.3 删除 Docker 镜像
-
命令:
docker rmi
-
目的:删除本地 Docker 镜像。
-
示例:
docker rmi my-app
1.4 推送和拉取 Docker 镜像
- 命令:
docker pull
,docker push
- 目的:从 Docker Hub 拉取镜像,或将镜像推送到 Docker Hub。
- 示例:
- 拉取镜像:
docker pull nginx
- 推送镜像:
docker push my-app
- 拉取镜像:
2. Docker 容器管理
2.1 启动容器
-
命令:
docker run
-
目的:启动一个新的 Docker 容器。
-
示例:
docker run -d -p 8080:80 nginx
解释:以后台模式启动
nginx
容器,并将容器的 80 端口映射到宿主机的 8080 端口。
2.2 列出容器
-
命令:
docker ps
-
目的:列出当前正在运行的容器。
-
示例:
docker ps
输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a2b5c6d8d2b9 nginx "/docker-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:8080->80/tcp webserver
2.3 停止容器
- 命令:
docker stop
- 目的:停止一个正在运行的容器。
- 示例:
docker stop <container-id>
2.4 删除容器
- 命令:
docker rm
- 目的:删除一个已停止的容器。
- 示例:
docker rm <container-id>
2.5 查看容器日志
- 命令:
docker logs
- 目的:查看容器的输出日志。
- 示例:
docker logs <container-id>
3. Docker 网络管理
3.1 查看 Docker 网络
-
命令:
docker network ls
-
目的:列出当前 Docker 主机上的所有网络。
-
示例:
docker network ls
输出示例:
NETWORK ID NAME DRIVER SCOPE 0a4f842ed9c1 bridge bridge local 5cfedff9fb64 host host local 6a8fe51f3b1b none null local
-
注意事项:
- Docker 默认创建了 3 种网络:
bridge
、host
和none
。bridge
是默认的网络模式,host
共享主机的网络栈,none
则没有网络连接。
- Docker 默认创建了 3 种网络:
3.2 创建自定义网络
-
命令:
docker network create
-
目的:创建一个自定义网络,可以指定网络驱动(如
bridge
、overlay
)。 -
示例:
docker network create --driver bridge my_custom_network
-
解释:
--driver
:指定网络驱动类型,常用的有bridge
(默认)、host
、overlay
等。my_custom_network
:网络名称。
3.3 连接容器到网络
-
命令:
docker network connect
-
目的:将运行中的容器连接到指定的网络。
-
示例:
docker network connect my_custom_network <container-id>
3.4 断开容器与网络的连接
-
命令:
docker network disconnect
-
目的:将容器从网络中断开。
-
示例:
docker network disconnect my_custom_network <container-id>
3.5 删除网络
-
命令:
docker network rm
-
目的:删除一个不再需要的网络。
-
示例:
docker network rm my_custom_network
4. Docker 数据卷管理
4.1 创建数据卷
- 命令:
docker volume create
- 目的:创建一个持久化数据的卷。
- 示例:
docker volume create my_volume
4.2 挂载卷到容器
- 命令:
docker run -v
- 目的:将数据卷挂载到容器内。
- 示例:
docker run -d -v my_volume:/data my-app
4.3 查看卷
- 命令:
docker volume ls
- 目的:列出所有数据卷。
- 示例:
docker volume ls
4. Docker 数据卷管理
4.1 创建数据卷
- 命令:
docker volume create
- 目的:创建一个持久化存储的数据卷,用于容器的数据保存。
- 示例:
docker volume create my_volume
- 注意事项:
- **Docker 会在默认的卷路径 **
/var/lib/docker/volumes/
中创建卷,但你也可以指定卷的位置。 - 卷用于持久化数据,即使容器被删除,数据依然保留。
- **Docker 会在默认的卷路径 **
4.2 挂载卷到容器
-
命令:
docker run -v
-
目的:将卷挂载到容器的指定路径,便于容器之间共享数据。
-
示例:
docker run -d -v my_volume:/data my-app
解释:将
my_volume
挂载到容器内的/data
目录,容器可以在该目录中读写数据。
4.3 查看卷
-
命令:
docker volume ls
-
目的:列出当前 Docker 主机上的所有数据卷。
-
示例:
docker volume ls
4.4 删除卷
-
命令:
docker volume rm
-
目的:删除不再使用的数据卷。
-
示例:
docker volume rm my_volume
-
注意事项:
- 删除数据卷前,确保没有容器在使用该卷,否则无法删除。
4.5 查看卷的详细信息
-
命令:
docker volume inspect
-
目的:查看数据卷的详细信息,如挂载路径等。
-
示例:
docker volume inspect my_volume
输出示例:
[ { "CreatedAt": "2025-02-24T12:34:56Z", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/my_volume/_data", "Name": "my_volume", "Scope": "local" } ]
5. Docker 容器间通信
5.1 使用 Docker Compose 管理多容器应用
- 命令:
docker-compose
- 用途:用于管理和启动多容器的应用。
- 示例:
docker-compose.yml
示例:version: '3' services: web: image: nginx ports: - "8080:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: example
- 启动服务:
docker-compose up -d
6. Docker 性能监控
6.1 查看容器资源使用
- 命令:
docker stats
- 目的:实时查看容器的 CPU、内存、网络等资源使用情况。
- 示例:
docker stats