Docker机器来设置Docker主机

运行Docker容器通常涉及三个组件:

  • Docker Client是一个二进制文件,它接受用户的命令并与主​​机进行来回通信
  • Docker Daemon在主机上运行,​​并负责构建,运行和分发Docker容器
  • Docker Registry是用于共享和管理Docker映像的SaaS平台。 Docker Hub是一个公共中心。 私人注册表也可以轻松设置,例如Artifactory的一个。 在后续博客中对此有更多的了解。

Docker Client与Daemon进行通信,Daemon可以位于同一主机上,也可以位于其他主机上。 它请求守护程序使用pull命令从存储库中提取图像。 然后,守护程序会从Docker Hub或任何配置的注册表中下载映像。 可以从注册表下载多个映像并将其安装在Daemon主机上。

docker-architecture-techtip39

在典型的开发环境设置中,Docker客户端和主机/守护程序将位于同一主机上。 即使它们位于不同的计算机上,它仍然需要登录到主机并为该OS设置Docker Daemon。

Docker Machine只需一条命令即可将主机从零迁移到Docker。 该主机可以是您的笔记本电脑,云中或数据中心中的笔记本电脑。 它创建服务器,在其上安装Docker,然后配置Docker客户端与之对话。

这将下载boot2docker VM,设置ssh密钥,生成证书,启动VM。 它基本上负责所有无聊的工作,因此您可以专注于所有有趣的事情。

该技术提示将向您展示Docker Machine入门,并使用它在Mac上设置Docker Host。 由于github.com/docker/machine/issues/742,它在Windows上尚不可用

让我们开始吧!

安装Docker机器

  1. docs.docker.com/machine/#installation下载适当的二进制文件 。 Mac的Binary可以下载为:
    ~> curl -L https://github.com/docker/machine/releases/download/v0.1.0/docker-machine_darwin-amd64 > /usr/local/bin/docker-machine
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100   403    0   403    0     0    725      0 --:--:-- --:--:-- --:--:--   726
    100 15.5M  100 15.5M    0     0  2276k      0  0:00:06  0:00:06 --:--:-- 3362k
    ~> chmod +x /usr/local/bin/docker-machine
  2. 验证安装为:
    ~> docker-machine -v
    docker-machine version 0.1.0

使用Docker Machine设置Mac Host

  1. 可以将Docker Machine配置为与多个驱动程序一起使用例如Amazon Web Services,Google Compute Engine,Microsoft Azure和Oracle VirtualBox。 在开发人员笔记本电脑上,Virtual Box是一个方便的选择。 最低要求为Virtual Box 4.3.20 。 因此,请确保您安装了正确的版本。
  2. 使用VirtualBox提供程序创建Docker主机,并将计算机称为“ mydocker”。在调用此命令之前,请确保ssh-keygen在PATH中。 在Mac上,它已经在/ usr / bin / ssh-keygen中。 在Windows上,可以将其作为Git Bash的一部分安装。
    ~> docker-machine create --driver virtualbox mydocker
    INFO[0000] Creating CA: /Users/arungupta/.docker/machine/certs/ca.pem 
    INFO[0000] Creating client certificate: /Users/arungupta/.docker/machine/certs/cert.pem 
    INFO[0002] Downloading boot2docker.iso to /Users/arungupta/.docker/machine/cache/boot2docker.iso... 
    INFO[0006] Creating SSH key...                          
    INFO[0007] Creating VirtualBox VM...                    
    INFO[0018] Starting VirtualBox VM...                    
    INFO[0018] Waiting for VM to start...                   
    INFO[0051] "mydocker" has been created and is now the active machine. 
    INFO[0051] To point your Docker client at it, run this in your shell: $(docker-machine env mydocker)

    这将下载安装了Docker守护程序的boot2docker ,并将在运行Docker的情况下创建并启动VirtualBox VM。

  3. 查找机器的IP地址为:
    ~> docker-machine ip
    192.168.99.101

    记下该IP地址,它将用于访问应用程序。

  4. 检查正在运行的计算机的状态为:
    ~> docker-machine ls
    NAME       ACTIVE   DRIVER       STATE     URL                         SWARM
    mydocker   *        virtualbox   Running   tcp://192.168.99.101:2376

    *ACTIVE列表示这是一个活跃的主机。

  5. 检查新创建的计算机的环境,如下所示:
    ~> docker-machine env mydocker
    export DOCKER_TLS_VERIFY=yes
    export DOCKER_CERT_PATH=/Users/arungupta/.docker/machine/machines/mydocker
    export DOCKER_HOST=tcp://192.168.99.101:2376

设置Docker客户端进行通信

  1. 设置您的客户端以与该主机对话:
    $(docker-machine env mydocker)

在主机上运行Java应用程序

  1. 在该主机上的WildFly和Docker上运行Java EE 7 动手实验中讨论的Java EE 7应用程序,方法如下:
    docker run -it -p 8080:8080 arungupta/javaee7-hol
    Unable to find image 'arungupta/javaee7-hol' locally
    Pulling repository arungupta/javaee7-hol
    a068decaf892: Download complete 
    511136ea3c5a: Download complete 
    5b12ef8fd570: Download complete 
    ae0c2d0bdc10: Download complete 
    
    . . .
    
    03:13:20,449 INFO  [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-12) Adding provider class org.javaee7.movieplex7.json.MovieReader from Application class org.javaee7.movieplex7.rest.ApplicationConfig
    03:13:20,554 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-12) JBAS017534: Registered web context: /movieplex7
    03:13:20,596 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 31) JBAS018559: Deployed "movieplex7-1.0-SNAPSHOT.war" (runtime-name : "movieplex7-1.0-SNAPSHOT.war")
    03:13:20,674 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
    03:13:20,675 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
    03:13:20,675 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final "Tweek" started in 10513ms - Started 400 of 452 services (104 services are lazy, passive or on-demand)
  2. 通过192.168.99.101:8080/movieplex7/访问该应用程序,如下所示:

    techtip77-docker-machine-output

Docker机器命令

Docker Machine命令的完整列表可以视为:

~> docker-machine 
NAME:
   docker-machine - Create and manage machines running Docker.

USAGE:
   docker-machine [global options] command [command options] [arguments...]

VERSION:
   0.1.0

AUTHOR:
  Docker Machine Contributors - <https://github.com/docker/machine>

COMMANDS:
   active	   Get or set the active machine
   create   	Create a machine
   config	   Print the connection config for machine
   inspect	  Inspect information about a machine
   ip		       Get the IP address of a machine
   kill		     Kill a machine
   ls		       List machines
   restart	  Restart a machine
   rm		       Remove a machine
   env		      Display the commands to set up the environment for the Docker client
   ssh		      Log into or run a command on a machine with SSH
   start	    Start a machine
   stop		     Stop a machine
   upgrade	  Upgrade a machine to the latest version of Docker
   url		      Get the URL of a machine
   help, h	  Shows a list of commands or help for one command
   
GLOBAL OPTIONS:
   --debug, -D								Enable debug mode
   --storage-path "/Users/arungupta/.docker/machine"			Configures storage path [$MACHINE_STORAGE_PATH]
   --tls-ca-cert "/Users/arungupta/.docker/machine/certs/ca.pem"	CA to verify remotes against [$MACHINE_TLS_CA_CERT]
   --tls-ca-key "/Users/arungupta/.docker/machine/certs/ca-key.pem"	Private key to generate certificates [$MACHINE_TLS_CA_KEY]
   --tls-client-cert "/Users/arungupta/.docker/machine/certs/cert.pem"	Client cert to use for TLS [$MACHINE_TLS_CLIENT_CERT]
   --tls-client-key "/Users/arungupta/.docker/machine/certs/key.pem"	Private key used in client TLS auth [$MACHINE_TLS_CLIENT_KEY]
   --help, -h								show help
   --version, -v							print the version

在此视频中了解有关Docker Machine,Swarm和Compose的更多信息:

为什么要使用除Docker Machine以外的其他任何东西来设置Docker主机? 否则如何设置Docker Host?

一些有用的参考:

请享用!

翻译自: https://www.javacodegeeks.com/2015/03/docker-machine-to-setup-docker-host.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值