Docker 命令详解
Docker 是一种流行的容器化技术,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,从而实现快速部署和一致性的运行环境。本文档将详细介绍 Docker 的基础知识,并通过一系列实用的命令来帮助你更好地管理 Docker 环境。
一、Docker 简介
Docker 包含三个核心组件:
- Docker 客户端 - 用户与 Docker 交互的界面。
- Docker 守护进程 - 运行在主机上,处理客户端发送的指令。
- Docker 镜像 - 包含了运行应用程序所需的所有文件和依赖。
Docker 的优点
- 一致性:无论在哪个环境中运行,应用的行为都是一致的。
- 资源高效:容器共享主机的操作系统内核,占用资源较少。
- 隔离性:每个容器都有自己的文件系统和运行空间,相互之间不会干扰。
二、安装 Docker
确保你的系统已经安装了 Docker。如果还没有安装,可以访问 Docker 官方网站 获取安装指南。
三、Docker 基础命令
查看版本信息
bash
docker --version
搜索镜像
bash
docker search <image_name>
下载镜像
bash
docker pull <image_name>
列出本地镜像
bash
docker images
删除镜像
bash
docker rmi <image_id>
启动容器
bash
docker run <image_name> [command]
查看运行中的容器
bash
docker ps
查看所有容器(包括停止的)
bash
docker ps -a
停止容器
bash
docker stop <container_id>
删除容器
bash
docker rm <container_id>
进入容器
bash
docker exec -it <container_id> /bin/bash
查看容器日志
bash
docker logs <container_id>
查看容器详细信息
bash
docker inspect <container_id>
四、进阶命令
构建镜像
bash
docker build -t <image_name> .
打包镜像
bash
docker save -o <filename>.tar <image_name>
加载镜像
bash
docker load -i <filename>.tar
镜像标签
bash
docker tag <source_image> <repository>:<tag>
查看系统信息
bash
docker system info
管理网络
创建网络
bash
docker network create <network_name>
连接网络
bash
docker network connect <network_name> <container_id>
删除网络
bash
docker network rm <network_name>
管理卷
创建卷
bash
docker volume create <volume_name>
列出所有卷
bash
docker volume ls
显示卷的详细信息
bash
docker volume inspect <volume_name>
删除卷
bash
docker volume rm <volume_name>
五、更多命令
清理资源
bash
docker system prune
显示磁盘使用情况
bash
docker system df
重启容器
bash
docker restart <container_id>
立即停止容器
bash
docker kill <container_id>
重命名容器
bash
docker rename <container_id> <new_name>
显示容器内的进程
bash
docker top <container_id>
显示容器映射的端口
bash
docker port <container_id> <port>
显示容器文件系统的更改
bash
docker diff <container_id>
将容器状态提交为新镜像
bash
docker commit <container_id> <new_image_name>
在容器中执行命令
bash
docker exec <container_id> <command>
检查容器的健康状态
bash
docker container inspect --format '{{.State.Health.Status}}' <container_id>
设置容器的健康检查
bash
docker run -d --health-cmd="curl -f http://localhost/ || exit 1" --health-interval=30s --health-timeout=30s --health-retries=3 <image_name>
创建容器时指定网络模式
bash
docker run --net=<network_mode> <image_name>
使用环境变量
bash
docker run -e KEY=VALUE <image_name>
使用自定义的 Dockerfile 构建镜像
bash
docker build -t <image_name> -f <Dockerfile_path> .
设置容器的资源限制
bash
docker run --memory=256M --cpu-period=100000 --cpu-quota=50000 <image_name>
设置容器的网络接口
bash
docker run --ip=<ip_address> --net=host <image_name>
挂载宿主机目录到容器
bash
docker run -v <host_dir>:<container_dir> <image_name>
挂载匿名卷到容器
bash
docker run -v <container_dir> <image_name>
挂载只读卷到容器
bash
docker run -v <host_dir>:<container_dir>:ro <image_name>
设置容器的启动命令
bash
docker run --entrypoint <command> <image_name>
设置容器的默认命令
bash
docker run --entrypoint <command> <image_name> <args>
设置容器的默认工作目录
bash
docker run -w <working_dir> <image_name>
从容器复制文件到宿主机
bash
docker cp <container_id>:<src_path> <dest_path>
从宿主机复制文件到容器
bash
docker cp <src_path> <container_id>:<dest_path>
设置容器的 DNS 服务器
bash
docker run --dns=<dns_ip> <image_name>
设置容器的域名
bash
docker run --domainname=<domain_name> <image_name>
设置容器的 hostname
bash
docker run --hostname <hostname> <image_name>
设置容器的 IP 地址
bash
docker run --ip <ip_address> <image_name>
设置容器的 MAC 地址
bash
docker run --mac-address <mac_address> <image_name>
设置容器的端口映射
bash
docker run -p <host_port>:<container_port> <image_name>
设置容器的端口映射(发布所有端口)
bash
docker run -P <image_name>
设置容器的标签
bash
docker run --label <key>=<value> <image_name>
设置容器的超时时间
bash
docker run --stop-timeout <timeout_seconds> <image_name>
设置容器的环境变量文件
bash
docker run --env-file <env_file_path> <image_name>
设置容器的用户
bash
docker run -u <user> <image_name>
设置容器的 UID 和 GID
bash
docker run -u <uid>:<gid> <image_name>
设置容器的 SELinux 标签
bash
docker run --security-opt label=<selinux_label> <image_name>
设置容器的 cgroups
bash
docker run --cgroup-parent=<cgroup_parent> <image_name>
设置容器的 cgroups 规则
bash
docker run --cgroupns=<mode> <image_name>
设置容器的 OOM 杀死动作
bash
docker run --oom-kill-disable <image_name>
设置容器的 OOM 分配率
bash
docker run --oom-score-adj=<score_adj> <image_name>
设置容器的内存交换限制
bash
docker run --memory-swap <image_name>
设置容器的内存交换比例
bash
docker run --memory-swappiness <image_name>
设置容器的 CPU 份额
bash
docker run --cpu-shares <image_name>
设置容器的 CPU 亲和性
bash
docker run --cpuset-cpus <image_name>
设置容器的 CPU 亲和性(线程)
bash
docker run --cpuset-mems <image_name>
设置容器的 CPU 实时周期
bash
docker run --cpu-period <image_name>
设置容器的 CPU 实时配额
bash
docker run --cpu-quota <image_name>
设置容器的 CPU 实时权重
bash
docker run --cpu-rt-period <image_name>
设置容器的 CPU 实时运行时间
bash
docker run --cpu-rt-runtime <image_name>
设置容器的 CPU 实时权重
bash
docker run --cpu-rt-weight <image_name>
bash
docker run --device-read-bps <image_name>
bash
docker run --device-read-iops <image_name>
bash
docker run --device-write-bps <image_name>
bash
docker run --device-write-iops <image_name>
bash
docker run --blkio-weight <image_name>
bash
docker run --kernel-memory <image_name>
bash
docker run --kernel-memory-tcm <image_name>
bash
docker run --oom-score-adj <image_name>
bash
docker run --init <image_name>
bash
docker run --detach-keys <image_name>
bash
docker run --disable-content-trust <image_name>
bash
docker run --interactive <image_name>
bash
docker run --isolation <image_name>
bash
docker run --log-driver <image_name>
bash
docker run --log-opt <image_name>
bash
docker run --name <container_name> <image_name>
bash
docker run --pid <image_name>
bash
docker run --read-only <image_name>
bash
docker run --rm <image_name>
bash
docker run --sig-proxy <image_name>
bash
docker run --storage-opt <image_name>
bash
docker run --sysctl <image_name>
bash
docker run --tmpfs <image_name>
bash
docker run --ulimit <image_name>
bash
docker run --userns <image_name>
bash
docker run --uts <image_name>
bash
docker run --workdir <image_name>
六、示例
假设我们要从官方仓库下载一个最新的 Ubuntu 镜像,并启动一个容器,然后进入该容器的 shell:
-
下载 Ubuntu 镜像:
bashdocker pull ubuntu:latest
-
启动容器并进入 shell:
bashdocker run -it ubuntu:latest /bin/bash
七、总结
本文介绍了 Docker 的基本概念和常用命令。通过这些命令,你可以开始构建、运行和管理 Docker 容器。随着对 Docker 的深入了解,你还可以探索更多的高级功能和技术。