Skip to content

第二章 容器与管理 更新ing

第一部分 容器(Container)

一、容器创建

shell
# docker run 命令用于创建并启动一个新的容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
## OPTIONS
#    -d: 后台运行容器并返回容器 ID
#    -it: 交互式运行容器,分配一个伪终端
#    --name: 给容器指定一个名称
#    -p: 端口映射,格式为 host_port:container_port
#    -v: 挂载卷,格式为 host_dir:container_dir
#    --rm: 容器停止后自动删除容器
#    --env 或 -e: 设置环境变量
#    --network: 指定容器的网络模式
#    --restart: 容器的重启策略(如 no、on-failure、always、unless-stopped)
#    -u: 指定用户
shell
# docker create 命令用于创建一个新的容器,但不会启动它
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
## OPTIONS
#    --name: 给容器指定一个名称
#    -p, --publish: 端口映射,格式为 host_port:container_port
#    -v, --volume: 挂载卷,格式为 host_dir:container_dir
#    -e, --env: 设置环境变量
#    --network: 指定容器的网络模式
#    --restart: 容器的重启策略(如 no、on-failure、always、unless-stopped)
#    -u, --user: 指定用户
#    --entrypoint: 覆盖容器的默认入口点
#    --detach: 在后台创建容器

二、容器信息

shell
# docker ps 命令用于列出Docker容器及其基础信息
docker ps [OPTIONS]
## OPTIONS
#    -a, --all: 显示所有容器,包括停止的容器
#    -q, --quiet: 只显示容器 ID
#    -l, --latest: 显示最近创建的一个容器,包括所有状态
#    -n: 显示最近创建的 n 个容器,包括所有状态
#    --no-trunc: 不截断输出
#    -s, --size: 显示容器的大小
#    --filter, -f: 根据条件过滤显示的容器
#    --format: 格式化输出
shell
# docker inspect 命令用于获取Docker对象(容器、镜像、卷、网络等)的详细信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
## OPTIONS
#    -f, --format: 使用 Go 模板语法格式化输出
#    --type: 返回指定类型的对象信息(可选类型:container、image、network、volume)
shell
# docker stats 命令用于实时显示Docker容器的资源使用情况,包括 CPU、内存、网络 I/O 和块 I/O
docker stats [OPTIONS] [CONTAINER...]
## OPTIONS
#    --all , -a: 显示所有的容器,包括未运行的
#    --format: 指定返回值的模板文件
#    --no-stream: 展示当前状态就直接退出了,不再实时更新
#    --no-trunc: 不截断输出

三、容器交互

shell
# docker exec 命令用于在运行中的容器内执行一个新的命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
## OPTIONS
#    -d, --detach: 在后台运行命令
#    --detach-keys: 覆盖分离容器的键序列
#    -e, --env: 设置环境变量
#    --env-file: 从文件中读取环境变量
#    -i, --interactive: 保持标准输入打开
#    --privileged: 给这个命令额外的权限
#    --user, -u: 以指定用户的身份运行命令
#    --workdir, -w: 指定命令的工作目录
#    -t, --tty: 分配一个伪终端
shell
# docker cp 命令用于在 Docker 容器和宿主机之间复制文件或目录
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
shell
# docker rename 命令用于重命名已存在的容器
docker rename CONTAINER NEW_CONTAINER_NAME

四、生命周期管理

shell
# docker start 命令用于启动一个或多个已经创建的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
## OPTIONS
#    -a: 附加到容器的标准输入输出流
#    -i: 附加并保持标准输入打开
shell
# docker stop 命令用于停止一个运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
## OPTIONS
#    -t, --time: 停止容器之前等待的秒数,默认是 10 秒
shell
# docker restart 命令用于重启一个正在运行的容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
## OPTIONS
#    -t, --time: 重启容器之前等待的秒数,默认是 10 秒
shell
# docker kill 命令用于立即终止一个或多个正在运行的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
## OPTIONS
#    -s, --signal: 发送给容器的信号(默认为 SIGKILL)
shell
# docker rm 命令用于删除一个或多个已经停止的容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
## OPTIONS
#    -f, --force: 强制删除正在运行的容器(使用 SIGKILL 信号)
#    -l, --link: 删除指定的连接,而不是容器本身
#    -v, --volumes: 删除容器挂载的卷

五、备份与迁移

shell
# docker commit 命令用于将容器的当前状态保存为一个新的 Docker 镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
## OPTIONS
#    -a: 提交的镜像作者
#    -c: 使用 Dockerfile 指令来创建镜像
#    -m: 提交时的说明文字
#    -p: 提交镜像前暂停容器(默认为 true)
shell
# docker import 命令用于从一个 tar 文件或 URL 导入容器快照,从而创建一个新的 Docker 镜像
docker import [OPTIONS] file|URL [REPOSITORY[:TAG]]
## OPTIONS
#    -c, --change: 在导入过程中应用 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV 等
#    -m, --message: 为导入的镜像添加注释

六、资源清理

shell
# docker prune 命令用于基础docker资源清理,会清理所有停止运行的容器与悬空镜像
docker prune [OPTIONS]
## OPTIONS
#  -f, --force: 强制清理,不提示确认
#  --filter: 按条件过滤清理对象(格式:key=value,如 --filter "until=24h")
shell
# docker container prune 命令用于清理所有停止运行的容器
docker container prune [OPTIONS]
## OPTIONS
#  -f, --force: 强制清理,不提示确认
#  --filte: 按条件过滤(如 --filter "until=72h" 清理72小时前停止的容器)
shell
# docker image prune 命令用于清理未被使用的镜像(默认仅清理悬空镜像)
docker image prune [OPTIONS]
## OPTIONS
#  -a, --all: 清理所有未被容器引用的镜像(包括有标签的闲置镜像)
#  -f, --force: 强制清理,不提示确认
#  --filter: 按条件过滤(如 --filter "dangling=true" 仅清理悬空镜像)
shell
# docker network prune 命令用于清理所有未被容器使用的自定义网络
docker network prune [OPTIONS]
## OPTIONS
#  -f, --force     # 强制清理,不提示确认
#  --filter        # 按条件过滤(如 --filter "until=48h" 清理48小时前创建的未使用网络)
shell
# docker volume prune 命令用于清理所有未被容器挂载的卷
docker volume prune [OPTIONS]
## OPTIONS
#  -f, --force: 强制清理,不提示确认
#  --filter: 按条件过滤(如 --filter "label!=preserve" 排除带preserve标签的卷)
shell
# docker system prune 命令用于全面清理Docker资源(容器、镜像、网络、构建缓存)
docker system prune [OPTIONS]
## OPTIONS
#  -a, --all: 扩展清理范围(如清理所有未使用镜像而非仅悬空镜像)
#  -f, --force: 强制清理,不提示确认
#  --filter: 按条件过滤(如 --filter "until=7d" 清理7天前的资源)
#  --volumes: 同时清理未被使用的卷(高危操作,数据可能丢失)

第二部分 网络(Network)

一、网络管理

shell
# docker network create 命令用于创建一个新网络
docker network create NETWORK_NAME
## OPTIONS
#    --driver: 指定网络驱动程序(如 bridge、host、overlay)
#    --subnet: 指定子网
#    --gateway: 指定网关
#    --ip-range: 指定可用 IP 地址范围
#    --ipv6: 启用 IPv6
#    --label: 为网络添加标签
shell
# docker network rm 命令用于删除一个或多个网络
docker network rm NETWORK_NAME [...NETWORK_NAME]

二、网络信息

shell
# docker network ls 命令用于列出所有网络
docker network ls
shell
# docker network inspect 命令用于查看网络详细信息
docker network inspect

三、容器与网络连接

shell
# docker network connect 命令用于将一个容器连接到一个网络
docker network connect NETWORK_NAME CONTAINER
shell
# docker network disconnect 命令用于将一个容器从一个网络断开
docker network disconnect NETWORK_NAME CONTAINER

第三部分 存储(Volume)

一、数据卷管理

shell
# docker volume create 命令用于创建一个新卷
docker volume create VOLUME_NAME
## OPTIONS
#    --driver: 指定卷驱动程序(默认为 local)
#    --label: 为卷添加标签
#    -o, --opt: 为卷指定驱动程序选项
shell
# docker volume rm 命令用于删除一个或多个卷
docker volume rm VOLUME_NAME [...VOLUME_NAME]

二、数据卷信息

shell
# docker volume ls 命令用于列出所有卷
docker volume ls
shell
# docker volume inspect 命令用于查看卷的详细信息
docker volume inspect

三、绑定挂载

绑定挂载直接将宿主机目录挂载到容器,无需提前创建,通过docker run -v实现:

shell
docker run -d -v VOLUME_NAME:CONTAINER_PATH img:v1
shell
docker run -d -v /to/path:CONTAINER_PATH img:v1