这是在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,下面还需要进一步学习。
- Docker —— 从入门到实践
- 如何部署应用
- 如何在AWS中使用Docker
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。