/ coding

Boot2docker 使用笔记

备注:环境为Mac 10.10.5

英文教程地址

  1. 下载安装不用再说什么,安不上一般是RP问题;

  2. 安装完成后,点击app会打开一个命令行终端,他会自动初始化一个叫default的VM,把环 境变量这些指向default,然后你就可以run docker commands。

  3. 这里我们重开一个terminal,新建一个叫做dev的VM:

    docker-machine create --driver virtualbox dev
    
    docker-machine ls //通过此命令可以查看已经存在的machine
    
    NAME   ACTIVE   DRIVER       STATE     URL                           SWARM
    dev             virtualbox   Running   tcp://192.168.99.101:2376 
    
  4. 把当前shell与dev联系起来:

    eval "$(docker-machine env dev)"
    
  5. 现在我们开始构建一个有nginx服务的容器

    docker run -d -P --name web nginx
    //-d参数让容器在后台运行
    //-P参数在容器上暴露一个端口给主机,随机
    //--name 给容器设置一个名字
    //nginx 使用一个nginx的镜像,他会先从本地寻找,不能找到才会从docker官网里去寻找相应的镜像
    

    执行结果

    Unable to find image 'nginx:latest' locally
    Pulling repository docker.io/library/nginx
    ceab60537ad2: Download complete 
    843e2bded498: Download complete 
    8c00acfb0175: Download complete 
    426ac73b867e: Download complete 
    d6c6bbd63f57: Download complete 
    4ac684e3f295: Download complete 
    91391bd3c4d3: Download complete 
    b4587525ed53: Download complete 
    0240288f5187: Download complete 
    28c109ec1572: Download complete 
    063d51552dac: Download complete 
    d8a70839d961: Download complete 
    Status: Downloaded newer image for nginx:latest
    78214bf0787e0ec92fd876d556f68cfac0a8a7fcc5b32bfe31072c21eef625aa
    

    可以看到我们已经得到了ningx的latest容器

  6. 接下来用ps查看拥有的容器

    docker ps
    

结果如下

    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                           NAMES
    78214bf0787e        nginx               "nginx -g 'daemon off"   4 hours ago         Up 4 hours          0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   web

可以看到,宿主机通过32769端口与名为web的容器的80通讯

ps:可以使用docker port 容器名称 来查看容器端口开放情况

  1. 当然现在不能通过localhost:端口的方式来访问web,你需要使用docker-machine ip dev来查看VM的ip地址

    docker-machine ip dev
    //dev为一开始创建的VM的name
    //结果如下
    192.168.99.101
    

OK,现在就可以通过192.168.99.101:32769来访问nginx的服务了,

当然你可以使用docker run -d -P -v $HOME/site:/usr/share/nginx/html \ --name web nginx命令,利用-v参数来让容器可以使用宿主机的文件作为web的根目录

docker stop web将停止web容器;

总结:

这里只是比较简单的介绍了boot2docker的用法,实际最好使用dockerfile来构建镜像

注意事项:

容器开启后使用的是容器所在的VM的ip,如果用宿主机的localhost将不能访问容器