docker机器创建
预计阅读时间:10分钟
创建一台机器。需要该--driver
标志以指示应在其上创建计算机的提供商(VirtualBox,DigitalOcean,AWS等),以及一个参数以指示创建的计算机的名称。
寻找可用驱动程序的完整列表?
有关可使用的驱动程序的完整列表
docker-machine create
以及如何使用它们的信息,请参阅机器驱动程序。
例子
这是使用--virtualbox
驱动程序创建名为的计算机的示例dev
。
$ docker-machine create --driver virtualbox dev
Creating CA: /home/username/.docker/machine/certs/ca.pem
Creating client certificate: /home/username/.docker/machine/certs/cert.pem
Image cache does not exist, creating it at /home/username/.docker/machine/cache...
No default boot2docker iso found locally, downloading the latest release...
Downloading https://github.com/boot2docker/boot2docker/releases/download/v1.6.2/boot2docker.iso to /home/username/.docker/machine/cache/boot2docker.iso...
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env dev
在帮助文本中访问特定于驱动程序的标志
该docker-machine create
命令具有适用于所有驱动程序的一些标志。这些可能会控制用户可能希望自定义的Machine设置过程(包括创建Docker Swarm容器)的各个方面。
$ docker-machine create
Docker Machine Version: 0.5.0 (45e3688)
Usage: docker-machine create [OPTIONS] [arg...]
Create a machine.
Run 'docker-machine create --driver name' to include the create flags for that driver in the help text.
Options:
--driver, -d "none" Driver to create machine with.
--engine-install-url "https://get.docker.com" Custom URL to use for engine installation [$MACHINE_DOCKER_INSTALL_URL]
--engine-opt [--engine-opt option --engine-opt option] Specify arbitrary flags to include with the created engine in the form flag=value
--engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option] Specify insecure registries to allow with the created engine
--engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] Specify registry mirrors to use [$ENGINE_REGISTRY_MIRROR]
--engine-label [--engine-label option --engine-label option] Specify labels for the created engine
--engine-storage-driver Specify a storage driver to use with the engine
--engine-env [--engine-env option --engine-env option] Specify environment variables to set in the engine
--swarm Configure Machine with Swarm
--swarm-image "swarm:latest" Specify Docker image to use for Swarm [$MACHINE_SWARM_IMAGE]
--swarm-master Configure Machine to be a Swarm master
--swarm-discovery Discovery service to use with Swarm
--swarm-strategy "spread" Define a default scheduling strategy for Swarm
--swarm-opt [--swarm-opt option --swarm-opt option] Define arbitrary flags for swarm
--swarm-host "tcp://0.0.0.0:3376" ip/socket to listen on for Swarm master
--swarm-addr addr to advertise for Swarm (default: detect and use the machine IP)
--swarm-experimental Enable Swarm experimental features
另外,驱动程序可以指定Machine可以接受的标志作为其插件代码的一部分。这些允许用户自定义所创建机器的提供程序特定的参数,例如大小(--amazonec2-instance-type m1.medium
),地理区域(--amazonec2-region us-west-1
)等。
要查看提供程序特定的标志,只需--driver
在调用create
帮助文本时传递一个值。
$ docker-machine create --driver virtualbox --help
Usage: docker-machine create [OPTIONS] [arg...]
Create a machine.
Run 'docker-machine create --driver name' to include the create flags for that driver in the help text.
Options:
--driver, -d "none" Driver to create machine with.
--engine-env [--engine-env option --engine-env option] Specify environment variables to set in the engine
--engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option] Specify insecure registries to allow with the created engine
--engine-install-url "https://get.docker.com" Custom URL to use for engine installation [$MACHINE_DOCKER_INSTALL_URL]
--engine-label [--engine-label option --engine-label option] Specify labels for the created engine
--engine-opt [--engine-opt option --engine-opt option] Specify arbitrary flags to include with the created engine in the form flag=value
--engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] Specify registry mirrors to use [$ENGINE_REGISTRY_MIRROR]
--engine-storage-driver Specify a storage driver to use with the engine
--swarm Configure Machine with Swarm
--swarm-addr addr to advertise for Swarm (default: detect and use the machine IP)
--swarm-discovery Discovery service to use with Swarm
--swarm-experimental Enable Swarm experimental features
--swarm-host "tcp://0.0.0.0:3376" ip/socket to listen on for Swarm master
--swarm-image "swarm:latest" Specify Docker image to use for Swarm [$MACHINE_SWARM_IMAGE]
--swarm-master Configure Machine to be a Swarm master
--swarm-opt [--swarm-opt option --swarm-opt option] Define arbitrary flags for swarm
--swarm-strategy "spread" Define a default scheduling strategy for Swarm
--virtualbox-boot2docker-url The URL of the boot2docker image. Defaults to the latest available version [$VIRTUALBOX_BOOT2DOCKER_URL]
--virtualbox-cpu-count "1" number of CPUs for the machine (-1 to use the number of CPUs available) [$VIRTUALBOX_CPU_COUNT]
--virtualbox-disk-size "20000" Size of disk for host in MB [$VIRTUALBOX_DISK_SIZE]
--virtualbox-host-dns-resolver Use the host DNS resolver [$VIRTUALBOX_HOST_DNS_RESOLVER]
--virtualbox-dns-proxy Proxy all DNS requests to the host [$VIRTUALBOX_DNS_PROXY]
--virtualbox-hostonly-cidr "192.168.99.1/24" Specify the Host Only CIDR [$VIRTUALBOX_HOSTONLY_CIDR]
--virtualbox-hostonly-nicpromisc "deny" Specify the Host Only Network Adapter Promiscuous Mode [$VIRTUALBOX_HOSTONLY_NIC_PROMISC]
--virtualbox-hostonly-nictype "82540EM" Specify the Host Only Network Adapter Type [$VIRTUALBOX_HOSTONLY_NIC_TYPE]
--virtualbox-import-boot2docker-vm The name of a Boot2Docker VM to import
--virtualbox-memory "1024" Size of memory for host in MB [$VIRTUALBOX_MEMORY_SIZE]
--virtualbox-no-share Disable the mount of your home directory
您可能会注意到,有些标志还指定了与它们关联的环境变量(位于该行的最左侧)。如果在docker-machine create
调用时设置了这些环境变量,则Docker机器会将它们用作标志的默认值。
为创建的Docker引擎指定配置选项
作为创建过程的一部分,Docker Machine将安装Docker并将其配置为一些合理的默认值。例如,它允许使用基于TLS的加密通过TCP通过外界进行连接,并且 在可用时默认使用AUFS作为存储驱动程序。
在某些情况下,用户可能希望自己为创建的Docker引擎(也称为Docker守护程序)设置选项。例如,他们可能想允许
使用守护程序的标志连接到正在运行自身的注册表--insecure-registry
。Docker Machine通过以create
开头的命令标志支持为已创建的引擎配置此类选项--engine
。
Docker Machine只在守护程序上设置配置的参数,而没有为您设置任何“依赖项”。例如,如果您指定创建的守护程序应用btrfs
作存储驱动程序,则仍必须确保已安装适当的依赖项,已创建BTRFS文件系统,等等。
以下是用法示例:
$ docker-machine create -d virtualbox \
--engine-label foo=bar \
--engine-label spam=eggs \
--engine-storage-driver overlay \
--engine-insecure-registry registry.myco.com \
foobarmachine
这将创建一个在VirtualBox中本地运行的虚拟机,该虚拟机使用
overlay
存储后端,具有键值对foo=bar
并spam=eggs
作为引擎上的标签,并允许从位于的不安全注册表中进行推送/拉取registry.myco.com
。您可以通过检查以下输出来验证其中的大部分内容docker info
:
$ eval $(docker-machine env foobarmachine)
$ docker info
Containers: 0
Images: 0
Storage Driver: overlay
...
Name: foobarmachine
...
Labels:
foo=bar
spam=eggs
provider=virtualbox
支持的标志如下:
--engine-insecure-registry
:指定不安全的注册表以允许创建的引擎--engine-registry-mirror
:指定要使用的注册表镜像--engine-label
:为创建的引擎指定标签--engine-storage-driver
:指定要与引擎一起使用的存储驱动程序
如果引擎支持多次指定标志(例如使用
--label
),那么Docker Machine也支持。
除了直接支持的守护程序标志子集之外,Docker机器还支持其他标志--engine-opt
,该标志可用于使用语法指定任意守护程序选项--engine-opt flagname=value
。例如,要指定守护程序应用8.8.8.8
作所有容器的DNS服务器,并始终使用syslog
日志驱动程序
,可以运行以下create命令:
$ docker-machine create -d virtualbox \
--engine-opt dns=8.8.8.8 \
--engine-opt log-driver=syslog \
gdns
此外,Docker Machine支持一个标志,--engine-env
该标志可用于指定要在引擎内使用语法设置的任意环境变量--engine-env name=value
。例如,要指定引擎应将其example.com
用作代理服务器,可以运行以下create命令:
$ docker-machine create -d virtualbox \
--engine-env HTTP_PROXY=http://example.com:8080 \
--engine-env HTTPS_PROXY=https://example.com:8080 \
--engine-env NO_PROXY=example2.com \
proxbox
为创建的机器指定Docker Swarm选项
除了配置上面列出的Docker Engine选项之外,您还可以使用Machine指定如何配置创建的swarm管理器。有一个--swarm-strategy
标志,可用于指定
Docker Swarm应该使用的调度策略(Machine默认为该spread
策略)。还有一个通用--swarm-opt
选项,其工作方式与上述--engine-opt
选项类似,不同之处在于它指定swarm manage
命令(用于引导主节点)的选项而不是基本命令。您可以使用它来配置高级用户可能感兴趣的功能,例如配置心跳间隔或Swarm过度使用资源的意愿。还有一个--swarm-experimental
标志,允许您访问实验性功能
在Docker Swarm中。
如果不确定如何配置这些选项,则最好完全不指定配置。Docker Machine为您选择合理的默认值,您无需担心。
创建示例:
$ docker-machine create -d virtualbox \
--swarm \
--swarm-master \
--swarm-discovery token://<token> \
--swarm-strategy binpack \
--swarm-opt heartbeat=5s \
upbeat
这将群调度策略设置为“ binpack”(每个主机尽可能紧密地包装在容器中,而不是散布在容器中),“心跳”间隔为5秒。
预创建检查
在创建计算机之前,许多驱动程序都需要具备一定的条件集。例如,在使用virtualbox
驱动程序之前,需要先安装VirtualBox 。因此,Docker Machine具有在驱动程序级别指定的“预创建检查”。
如果此创建前检查成功,则Docker Machine照常进行创建。如果创建前检查失败,则Docker Machine进程退出并显示状态代码3,以指示非零退出的源是创建前检查失败。
机器,创建,子命令