container
命令
命令(全) | 示例 | 操作 | 备注 |
---|---|---|---|
docker container run <image name > | 创建容器 | ||
docker container ls | 列出容器(up) | ||
docker container ls -a | 列出容器(up & down) | ||
docker container ls -aq | 列出容器ID | ||
docker container ps -aq | 列出容器ID | ||
docker container stop <name or ID> | 停止容器 | ||
docker container rm <name or ID> | 删除容器 | -f 强制删除 | |
docker container attach < container id> | 容器转为前台运行 | ||
docker container commit <container id > < tag > | docker container commit 2d34 loveagri/nginx:1.0 | 将一个停止的容器构建一个惊喜那个 |
run参数
参数 | 值 | 意义 | 示例 |
---|---|---|---|
-i | 表示保持容器的标准输入开放 | ||
-t | 分配一个伪终端 | ||
-it | 以交互模式运行容器,允许与容器进行交互 | docker run -it image_name` | |
-d 或 --detach | 在后台以守护进程模式运行容器。 | ||
--name | 为容器指定一个名称(可以根据需要更改为您喜欢的名称)。 | docker run --name con | |
-p 80:80 | 将主机的端口 80 映射到容器的端口 80 | ||
-v | 挂载主机上的文件或目录到容器内部。 | docker run -v host_path:container_path image_name | |
-e | 设置容器的环境变量。 | docker run -e ENV_VARIABLE=value image_name | |
--restart | no 、on-failure[:max-retries] 、always 、unless-stopped | 指定容器在退出时的重启策略。 | docker run --restart=always image_name |
--link | 将容器连接到另一个容器,在两个容器之间建立网络连接。 | docker run --link container_name:image_alias image_name | |
--dns | 指定容器使用的自定义 DNS 服务器。 | docker run --dns 8.8.8.8 image_name | |
--dns-search | 指定容器的 DNS 搜索域。 | docker run --dns-search example.com image_name | |
--cap-add 和 --cap-drop | 增加或删除容器的 Linux 能力,用于控制容器的权限。 | docker run --cap-add=SYS_ADMIN image_name | |
--privileged | 给容器赋予特权,可以访问主机的设备。 | docker run --privileged image_name | |
--tmpfs | 在容器内创建临时文件系统,用于存储临时数据。 | docker run --tmpfs /tmp image_name | |
--ulimit | 设置容器的资源限制,如最大打开文件数、最大进程数等。 | docker run --ulimit nofile=1024:1024 image_name` | |
--security-opt | 设置容器的安全选项,如 AppArmor 配置、Seccomp 配置等。 | docker run --security-opt seccomp:unconfined image_name | |
--cpu-shares | 设置容器的 CPU 份额,用于控制 CPU 资源的分配。 | docker run --cpu-shares 512 image_name | |
--memory | 设置容器可使用的内存限制。 | docker run --memory 1g image_name | |
--network | 指定容器使用的网络模式。 | docker run --network bridge image_name | |
--hostname | 设置容器的主机名。 | docker run --hostname my_container image_name | |
--user | 指定容器运行时的用户名或 UID。 | docker run --user username image_name | |
--volume-driver | 指定容器使用的卷驱动程序。 | docker run --volume-driver my_driver image_name | |
--shm-size | 设置容器的共享内存大小 | docker run --shm-size 2g image_name | |
--add-host | 向容器的 /etc/hosts 文件添加自定义主机名和 IP 映射。 | docker run --add-host myhost:192.168.0.100 image_name | |
--read-only | 将容器的文件系统设置为只读模式。 | docker run --read-only image_name25 | |
–cpu-quota | 设置容器的 CPU 配额,以微秒为单位 | docker run --cpu-quota=50000 image_name | |
--cpu-period | 设置容器的 CPU 周期,以微秒为单位。 | docker run --cpu-period=100000 image_name | |
--dns-option | 为容器的 DNS 配置添加自定义选项 | docker run --dns-option=timeout:5 image_name | |
--sysctl | 设置容器的内核参数 | docker run --sysctl net.ipv4.ip_forward=1 image_name | |
--label | 为容器添加标签,用于识别和组织容器 | docker run --label env=production image_name | |
--workdir | 设置容器的工作目录 | docker run --workdir /app image_name | |
--rm | 容器退出时自动删除容器。这在临时容器中非常有用 | ||
--env-file | 从文件中读取环境变量 |
批量删除或清理
sh
docker container rm $(docker container ps -aq)
docker system prune -a -f # 可以快速对系统进行清理,删除停止的容器,不用的image,等等
detach & attach模式
sh
# attach
docker container run -p 80:80 nginx
# detach 容器会在后台执行
docker container run -d -p 80:80 nginx
日志
sh
docker container logs <container id>
# dynamic tracking logs
docker container logs -f <container id>
交互式进入container
sh
# 直接进
docker container run -it busybox sh
# container detach模式进
docker container exec -it <container id> sh
容器持续运行
在 Docker 中,默认情况下,容器会在其主进程(PID 1)退出时停止运行。要让一个容器持续运行(即使没有前台进程),可以通过以下方法实现:
方法 1:运行一个永不退出的命令
使用 tail -f /dev/null
或 sleep infinity
作为容器的前台进程(这些命令会永久挂起,但不会消耗 CPU 资源):
sh
docker run -d --name my_container ubuntu tail -f /dev/null
docker run -d --name my_container ubuntu sleep infinity
方法 2:使用交互式终端(-it
)
适用于需要保持容器活跃并随时交互的场景:
sh
docker run -it --name my_container ubuntu bash