1、docker create 简介
docker create
是用来创建一个新容器,docker container create
(或简写为docker create
)命令从指定的镜像创建一个新容器,而不启动它。
创建容器时,docker守护进程在指定的映像上创建一个可写的容器层,并为运行指定的命令做好准备。然后将容器ID打印到STDOUT
。这类似于docker run -d
,只是容器永远不会启动。然后,可以使用docker container start
(或简写为docker start
)命令在任何时候启动容器。
如果想提前设置好容器配置,以便在需要时启动它,这很有用。新容器的初始状态是created。
docker create命令与docker run
命令(在启动docker之前执行docker create)共享大部分选项。
2、docker create 语法
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
参考文档:https://docs.docker.com/engine/reference/commandline/create/
3、docker create 命令
1)创建并启动一个容器
docker create -i -t --name mycontainer alpine docker start --attach -i mycontainer
相当于:
docker run -it --name mycontainer2 alpine
2)初始化卷
容器卷在docker create阶段初始化(即docker run)。
docker create -v /data --name data ubuntu 240633dfbb98128fa77473d3d9018f6123b99c454b3251427ae190a7d951ad57 docker run --rm --volumes-from data ubuntu ls -la /data total 8 drwxr-xr-x 2 root root 4096 Dec 5 04:10 . drwxr-xr-x 48 root root 4096 Dec 5 04:11 ..
或
docker create -v /home/docker:/docker --name docker ubuntu 9aa88c08f319cd1e4515c3c46b0de7cc9aa75e878357b1e96f91e2c773029f03 docker run --rm --volumes-from docker ubuntu ls -la /docker total 20 drwxr-sr-x 5 1000 staff 180 Dec 5 04:00 . drwxr-xr-x 48 root root 4096 Dec 5 04:13 .. -rw-rw-r-- 1 1000 staff 3833 Dec 5 04:01 .ash_history -rw-r--r-- 1 1000 staff 446 Nov 28 11:51 .ashrc -rw-r--r-- 1 1000 staff 25 Dec 5 04:00 .gitconfig drwxr-sr-x 3 1000 staff 60 Dec 1 03:28 .local -rw-r--r-- 1 1000 staff 920 Nov 28 11:51 .profile drwx--S--- 2 1000 staff 460 Dec 5 00:51 .ssh drwxr-xr-x 32 1000 staff 1140 Dec 5 04:01 docker
4、选项说明
选项 | 默认 | 描述 |
--add-host | 添加自定义主机到ip映射(host:ip) | |
--attach , -a | 连接到STDIN、STDOUT或STDERR | |
--blkio-weight | Block IO(相对权重),在10到1000之间,或0禁用(默认0) | |
--blkio-weight-device | Block IO 权重(设备的相对权重) | |
--cap-add | 添加Linux功能 | |
--cap-drop | 删除Linux功能 | |
--cgroup-parent | 容器的可选父cgroup | |
--cgroupns | 使用(host|private)‘host’: 在Docker主机的Cgroup命名空间中运行容器, ‘private’:在其自己的私有Cgroup命名空间中运行容器": 使用由守护进程上的default-cgroupns-mode
| |
--cidfile | 将容器ID写入文件 | |
--cpu-count | CPU计数(仅Windows) | |
--cpu-percent | CPU百分比(仅Windows) | |
--cpu-period | 限制CPU CFS(完全公平调度器)周期 | |
--cpu-quota | 限制CPU CFS(完全公平调度器)配额 | |
--cpu-rt-period | 以微秒为单位限制CPU实时周期 | |
--cpu-rt-runtime | 以微秒为单位限制CPU的实时运行时间 | |
--cpu-shares , -c | CPU份额(相对权重) | |
--cpus | cpu个数 | |
--cpuset-cpus | 允许执行的cpu(0-3、0、1) | |
--cpuset-mems | 允许执行的MEMs (0-3, 0,1) | |
--device | 添加主机设备到容器中 | |
--device-cgroup-rule | 在cgroup允许的设备列表中添加一条规则 | |
--device-read-bps | 限制从设备读取速率(每秒字节数) | |
--device-read-iops | 限制从设备读取速率(每秒IO) | |
--device-write-bps | 限制对设备的写入速率(每秒字节数) | |
--device-write-iops | 限制对设备的写速率(每秒IO数) | |
--disable-content-trust | true | 跳过镜像验证 |
--dns | 设置自定义DNS服务器 | |
--dns-opt | 设置DNS选项 | |
--dns-option | 设置DNS选项 | |
--dns-search | 设置自定义DNS搜索域 | |
--domainname | 容器NIS域名 | |
--entrypoint | 覆盖镜像的默认入口点 | |
--env , -e | 设置环境变量 | |
--env-file | 读入一个环境变量文件 | |
--expose | 公开一个或一组端口 | |
--gpus | 要添加到容器中的GPU设备(使用‘all’ 传递所有GPU) | |
--group-add | 添加要加入的其他组 | |
--health-cmd | 命令运行以检查健康状况 | |
--health-interval | 间隔时间(ms|s|m|h)(默认为0) | |
--health-retries | 连续的故障需要报告不健康 | |
--health-start-period | 容器在启动健康重试前初始化的起始周期倒计时(ms|s|m|h)(默认0) | |
--health-timeout | 允许一次检查运行的最大时间(ms|s|m|h)(默认0) | |
--help | 打印使用方法 | |
--hostname , -h | 容器主机名 | |
--init | 在容器中运行init来转发信号并获取进程 | |
--interactive , -i | 保持STDIN打开,即使没有连接 | |
--io-maxbandwidth | 系统驱动器的最大IO带宽限制(仅Windows) | |
--io-maxiops | 系统盘最大IOps限制(Windows专用) | |
--ip | IPv4地址(例如:172.30.100.104) | |
--ip6 | IPv6地址(例如,2001:db8::33) | |
--ipc | IPC使用模式 | |
--isolation | 容器隔离技术 | |
--kernel-memory | 内核内存限制 | |
--label , -l | 在容器上设置元数据 | |
--label-file | 读取一行分隔的标签文件 | |
--link | 添加链接到另一个容器 | |
--link-local-ip | 容器IPv4/IPv6链路本地地址 | |
--log-driver | 容器的日志驱动程序 | |
--log-opt | 日志驱动程序选项 | |
--mac-address | 容器MAC地址(例如:92:d0:c6:0a:29:33) | |
--memory , -m | 内存限制 | |
--memory-reservation | 内存软限制 | |
--memory-swap | Swap limit等于内存加上Swap: ‘-1’以启用无限的交换 | |
--memory-swappiness | -1 | 调优容器内存交换度(0到100) |
--mount | 将一个文件系统装载到容器 | |
--name | 为容器分配一个名称 | |
--net | 将容器连接到网络 | |
--net-alias | 为容器添加网络作用域别名 | |
--network | 将容器连接到网络 | |
--network-alias | 为容器添加网络作用域别名 | |
--no-healthcheck | 禁用容器指定的HEALTHCHECK | |
--oom-kill-disable | 禁用 OOM Killer | |
--oom-score-adj | 调整主机的OOM偏好(-1000到1000) | |
--pid | 要使用的PID命名空间 | |
--pids-limit | 调整容器pid限制(设置为-1表示无限) | |
--platform | 如果服务器支持多平台,请设置平台 | |
--privileged | 给这个容器提供扩展权限 | |
--publish , -p | 向主机发布容器的端口 | |
--publish-all , -P | 将所有暴露的端口发布到随机端口 | |
--pull | missing | 创建前拉取镜像 (always , |missing ,never) |
--quiet , -q | 抑制拉取输出 | |
--read-only | 以只读方式装载容器的根文件系统 | |
--restart | no | 重新启动策略,在容器退出时应用 |
--rm | 容器退出时自动移除 | |
--runtime | 此容器使用的运行时 | |
--security-opt | 安全选项 | |
--shm-size | /dev/shm的大小 | |
--stop-signal | 停止容器的信号 | |
--stop-timeout | 停止容器的超时时间(单位为秒) | |
--storage-opt | 容器的存储驱动程序选项 | |
--sysctl | Sysctl选项 | |
--tmpfs | 挂载tmpfs目录 | |
--tty , -t | 分配一个伪tty | |
--ulimit | Ulimit选项 | |
--user , -u | Username 或 UID (格式: [:]) | |
--userns | 要使用的用户命名空间 | |
--uts | 要使用的UTS命名空间 | |
--volume , -v | 绑定挂载卷 | |
--volume-driver | 容器的可选卷驱动程序 | |
--volumes-from | 从指定的容器挂载卷 | |
--workdir , -w | 容器内的工作目录 |