第二章 容器与管理 更新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