Mac上配置基于Docker的开发环境

获取Docker工具包

docker目前分为商业版(EnterPrise Edition简称ee)和社区版(Community Edition简称ce)

docker ce官网地址:https://www.docker.com/community-edition#/download

下载的时候需要有 DockerID,下载完成以后是一个dmg的包,将近500m的大小。

安装工具&验证

常规的双击dmg安装,然后drag & drop到Application目录下,你就可以再launchpad中找到docker了。安装以后大约占用1.7G的空间。

安装完成以后,在Terminal中

1
2
3
4
5
$ docker --verison  # 查看docker的版本信息
$ docker run hello-world # 验证是否可以拉取到镜像

# 如果出现了该错误,unauthorized: incorrect username or password. 执行以下操作
$ docker logout

文档地址: https://docs.docker.com/docker-for-mac/

下载镜像 / 启动服务

镜像的下载源是hub.docker.com,当然你也可以配置到国内的镜像源上,有空再说。

1
2
3
4
5
6
7
8
9
10
11
# 启动一个 Nginx Webserver 玩玩
$ docker run -d -p 80:80 --name webserver nginx
# 带下载完成以后,就可以在浏览器上用http://localhost/ 来访问了

# 查看下当前机器中都跑了哪些 container
$ docker container ls # 列出当前正在运行的容器
$ docker container ls -a # 列出系统中所有的容器,包含已经停止的

# 或者也有简写的形式
$ docker ps
$ docker ps -a

上面 docker run 的操作背后,其实隐藏了一些逻辑

  1. 从本地镜像中找名字叫nginx的镜像image
  2. 如果没找到,则从镜像仓库里面去下载该镜像image
  3. 下载完成以后,启动一个名称叫webserver的容器container
  4. 将本机的80端口映射到镜像中的80端口
  5. 于是,你通过本机访问 localhost:80 其实就是访问镜像中的web服务了

容器操作

容器可以看成是一个虚拟机,跟你买回家的电脑一样的,每一台电脑都是独一无二的,里面装的东西跑的软件都是独一无二的。但是它可以非常方便的创建和销毁,这跟虚拟机有本质的区别。

1
2
3
4
5
6
$ docker start webserver
$ docker stop webserver
$ docker restart webserver
$ docker rename webserver websvr # 重命名
$ docker stats websvr # 查看当前容器资源占用情况
$ docker rm websvr

镜像操作

前面说了,容器是虚拟机,那么虚拟机里面跑的软件哪里来?答案是从镜像中继承过来。

1
2
3
$ docker image ls    # 列出当前机器上所有的镜像
$ docker rmi nginx # 删除名为nginx的镜像
$ docker search centos # 搜索名叫centos的镜像,如果官方的镜像会有OFFICIAL的标识

小技巧:命令自动补全

如果你用的是bash,复制以下代码到你的terminal中,注意:需要homebrew的支持

1
2
3
4
5
# for bash
etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.bash-completion $(brew --prefix)/etc/bash_completion.d/docker
ln -s $etc/docker-machine.bash-completion $(brew --prefix)/etc/bash_completion.d/docker-machine
ln -s $etc/docker-compose.bash-completion $(brew --prefix)/etc/bash_completion.d/docker-compose

如果你用的是zsh,则复制粘贴以下代码

1
2
3
4
5
# for zsh
etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
ln -s $etc/docker-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine
ln -s $etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose

镜像加速服务

我用的是daocloud的docker镜像服务,地址为:https://www.daocloud.io/mirror#

开通以后,daocloud会分配一个专有的加速器地址形如 http://xxxxx.m.daocloud.io

将这个地址配置到 docker->Preferences->Daemon->Registry mirrors

以上算是对docker有了基本的认识,接下来,再去聊如何配置本地的开发环境。