整理了一份综合性的 Docker 笔记,涵盖了核心概念、常用命令、实例(容器)管理、Dockerfile、Docker Compose、数据管理、网络、重启策略、常用技巧以及常见问题解决方案,附带详细示例,方便日常使用和学习。
docker pull <image_name>示例:
docker pull ubuntu:20.04
docker images
docker rmi <image_name>示例:
docker rmi ubuntu:20.04
docker run -d --name <container_name> <image_name>示例:
docker run -d --name my_ubuntu ubuntu:20.04
docker create --name <container_name> <image_name>示例:
docker create --name my_container ubuntu:20.04启动已创建的容器:
docker start my_container
docker ps
docker ps -a
docker stop <container_name_or_id>示例:
docker stop my_ubuntu
docker rm <container_name_or_id>示例:
docker rm my_ubuntu
docker volume create <volume_name>
docker volume ls
docker volume rm <volume_name>
docker exec -it <container_name> /bin/sh或者
docker exec -it <container_name> /bin/bash
docker logs <container_name>
docker cp <container_name>:<path> <host_path>
docker cp <host_path> <container_name>:<path>
docker build -t <image_name> <Dockerfile_path>
docker push <image_name>
docker image prune
docker network ls
docker network create <network_name>
docker network connect <network_name> <container_name>
FROM ubuntu:20.04 RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
docker-compose up -d
docker-compose down
docker-compose logs
version: '3' services: web: image: nginx ports: - "80:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: example
docker run -v /host/path:/container/path <image_name>
docker run -v my-volume:/container/path <image_name>
docker network create <network_name>
docker network inspect <network_name>
docker run -d --name <container_name> --restart always <image_name>
docker image prune -a
docker container prune
docker volume prune
docker stats <container_name>
docker save -o <file.tar> <image_name>
docker load -i <file.tar>
docker run -p <host_port>:<container_port> <image_name>
docker inspect <container_name> --format '{{.HostConfig.RestartPolicy.Name}}'
docker run --restart no <image_name>
docker run --log-opt max-size=10m --log-opt max-file=3 <image_name>
这份综合笔记详细介绍了 Docker 的核心概念、镜像与容器(实例)管理、以及相关工具和技巧。通过掌握这些命令和示例,你可以快速上手并熟练管理 Docker 环境。
[
{Id: 容器的唯一标识符(da9d93c5e7e163f134f97841bed910b8e6fef66244b0504511a2ae289133d4a8)。
Created: 容器的创建时间(2025-03-16T18:57:18.460646709Z)。
Path: 容器启动时执行的命令(sh)。
Args: 传递给命令的参数(-c "/entrypoint.sh")。
Status: 容器当前状态为 exited(已停止)。
Running: false,表示容器未运行。
ExitCode: 137,表示容器被强制停止(通常是由于 docker kill 或系统内存不足)。
StartedAt: 容器最后一次启动时间(2025-03-18T15:10:34.675233651Z)。
FinishedAt: 容器停止时间(2025-03-18T15:25:38.812431981Z)。
Image: 容器基于的镜像 ID(sha256:77007505841feeb1d4277a1781564fc59631f5104d5bff97a73775682b290ea4)。
Image Name: 镜像名称为 ghcr.io/bclswl0827/chatgemini。
ResolvConfPath: DNS 配置文件路径。
HostnamePath: 主机名文件路径。
HostsPath: /etc/hosts 文件路径。
LogPath: 容器日志文件路径。
Name: 容器名称为 chatgemini。
RestartPolicy: 重启策略为 always,即容器会自动重启。
Mounts: 挂载信息:
Bind Mount: 将主机目录 /home/ctq/chatgemini 挂载到容器内的 /app。
Volume Mount: 使用了两个数据卷:
/etc/nginx 对应卷 a19a4ee738ae999f7f7d24c6c5a37197e73ac07af2c2ab9e972f358cd3923d00。
/usr/share/nginx/html 对应卷 072d2c9010c0fc096630c71aad5975b98f08af68bc63636c4455ebec9a0aa408。
NetworkMode: 网络模式为 bridge。
PortBindings: 端口映射:
容器内的 8080/tcp 端口映射到主机的 8080 端口。
Env: 容器启动时设置的环境变量:
REACT_APP_GEMINI_API_KEY=你的Gemini密钥:用于配置 Gemini API 密钥。
其他变量为系统或镜像默认的环境变量。
GraphDriver: 使用 overlay2 存储驱动。
LowerDir: 镜像的只读层。
UpperDir: 容器的可写层。
MergedDir: 容器文件系统的合并视图。
WorkDir: 用于存储临时文件的目录。
Config: 容器的启动配置,包括:
ExposedPorts: 暴露的端口(80/tcp 和 8080/tcp)。
Cmd: 未指定启动命令(null),使用镜像默认命令。
Entrypoint: 容器启动时执行的入口点(sh -c /entrypoint.sh)。
NetworkSettings: 网络配置信息:
Bridge: 使用 Docker 默认的 bridge 网络。
Ports: 端口映射信息(空值表示未动态分配端口)。
容器 chatgemini 基于镜像 ghcr.io/bclswl0827/chatgemini,当前状态为已停止(exited)。
容器使用了绑定挂载和数据卷挂载,分别将主机目录和 Docker 卷挂载到容器内。
容器的重启策略为 always,因此会在 Docker 服务启动时自动重启。
容器暴露了 80/tcp 和 8080/tcp 端口,并将 8080/tcp 映射到主机的 8080 端口。