Docker CLI docker create 常用命令

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍Docker CLI 中 docker create 常用命令。

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

API 1.41+

使用(host|private)‘host’:

在Docker主机的Cgroup命名空间中运行容器,

‘private’:在其自己的私有Cgroup命名空间中运行容器":

使用由守护进程上的default-cgroupns-mode

选项配置的Cgroup命名空间(默认)

--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

API 1.40+

要添加到容器中的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

容器内的工作目录

推荐阅读
cjavapy编程之路首页