开始使用Docker

这是在MAC上的一次从零开始学Docker的实践,如果想知道的更多,请阅读官方文档或者Docker —— 从入门到实践,本文的核心科技是动手

Docker是基于Linux Container技术的,并不支持原生的Mac系统,Mac上的Docker是运行于一个Linux虚拟机内的。所以可以在Mac上装个VirtualBox,然后安装一个Linux发行版(例如CoreOS),之后所有的操作就在Linux中进行了。但是这种方法操作起来太麻烦了,我可不想每次使用Docker的时候都启动VirtualBox,然后启动Linux虚拟机,再ssh到虚拟机上,能不能让程序自动的执行这一系列操作。

还好已经有这样的程序了,Boot2Docker是你的好帮手^_^。

安装

使用HomeBrew安装Boot2Docker:

shell$ brew install boot2docker

程序会自动安装Docker客户端和Boot2Docker,网络不好的话喝杯咖啡再回来看看,不行的话多试几次,地址被墙的话请科学上网。

使用

初始化Boot2Docker:

shell$ boot2docker init

如果没有ISO镜像的话,会自动下载。初始化只需要执行一次。

启动Boot2Docker:

shell$ boot2docker start

显示环境变量:

shell$ boot2docker shellinit
Writing /Users/wzy/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/wzy/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/wzy/.boot2docker/certs/boot2docker-vm/key.pem
    export DOCKER_HOST=tcp://192.168.59.103:2376
    export DOCKER_CERT_PATH=/Users/wzy/.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1

显示的结果会和你的电脑上的结果不同。

设置环境变量:

shell$ eval "$(boot2docker shellinit)"

这个设置只针对当前会话有效,当你重新打开一个会话后必须再次设置。
或者直接修改.bashrc或者.zshrc,添加boot2docker shellinit结果中的export语句。

运行docker version没有任何错误的话,说明Docker客户端环境已经配置好了,接下来就可以使用Docker了。

练习

下面我们在Docker中启动一个Nginx服务器。

shell$ docker run -d -P --name web nginx

由于本地没有nginx镜像,docker会自动从公共仓库中下载nginx镜像并运行,下载的内容大概有100M。

shell$ docker ps

查看正在运行的docker容器。

shell$ docker port web
443/tcp -> 0.0.0.0:49153
80/tcp -> 0.0.0.0:49154

查看端口的映射关系。

通过浏览器打开localhost:49154,发现无法访问,这并不是服务器没有启动,而是docker端口映射中的0.0.0.0并非是我们的电脑,而是运行Docker的Linux虚拟机,即docker将nginx监听的80端口映射到了虚拟机的49154端口,我们要访问的是虚拟机的49154端口,虚拟机的地址可以通过命令boot2docker ip获得。

shell$ boot2docker ip
192.168.59.103

访问192.168.59.103:49154即可。

停止并删除容器:

shell$ docker stop web
$ docker rm web

再多一点

到这里我们已经亲自感受了Docker,下面还需要进一步学习。

    原文作者:wzyplus
    原文地址: https://segmentfault.com/a/1190000002652122
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞