docker 初体验 for mac

mac docker安装

当前版本1.11.1

方式1 :官网安装(https://docs.docker.com/mac/step_one/)

方式1是对官网安装步骤的翻译
Mac OS X用户需要使用Docker Toolbox安装,其中docker toolbox 包含了如下组件

  • Docker CLI client 运行docker 创建镜像和容器
  • Docker Machine 可以在mac终端运行docker引擎命令
  • Docker Compose 运行 docker-compose 命令
  • Kitematic docker的图形化组件
  • 针对于docker命令行环境的 快速启动预配置shell
  • Oracle VM 虚拟机

因为docker引擎守护进程采取了linux特殊化的内核优点,你不需要在os x 本地运行docker引擎。你需要使用docker machine 命令,它将在你的机器上创建并附属一个小型linux虚拟机,是一个专属你和你的mac的,支配docker引擎的虚拟机。


第一步

检查你的mac版本 ,你的mac必须是OS X 10.8 “Mountain Lion”以上才能运行docker(点击查看北本机,查看版本)。

查看版本

第二步

安装Docker Toolbox
这里写图片描述
缺省二进制库将安装在/usr/local/bin,可以服务所有用户,此时不要改变任何的默认配置。
最后会出现QuickStart 两种docker启动方式,忽略它们,点击继续。

第三步

验证安装
打开Launchpad,运行Docker Quickstart Terminal.
稍后,会自动进行一些默认的配置

输入 docker run hello-world
如果成功的话,终端会出现类似下面的内容

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
535020c3e8ad: Pull complete
af340544ed62: Pull complete
Digest: sha256:a68868bfe696c00866942e8f5ca39e3e31b79c1e50feaee4ce5e28df2f051d5c
Status: Downloaded newer image for hello-world:latest

Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker Engine CLI client contacted the Docker Engine daemon.
2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker Engine daemon created a new container from that image which runs the
   executable that produces the output you are currently reading.
4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it
   to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.com

For more examples and ideas, visit:
https://docs.docker.com/userguide/

此时已经安装成功了,如果出现错误请查看https://docs.docker.com/faqs/troubleshoot/

mac docker运行

  • 创建或启动一个虚拟机
  • 在虚拟机转换你的环境
  • 使用docker创建,加载,管理容器

创建出的虚拟机,包含配置,可以重复使用,你可以使用Docker Quickstart Terminal 或者shell配置

我们使用shell
1.创建我们的docker 虚拟机

$ docker-machine create --driver virtualbox cy
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env default

此时会创建一个叫cy的虚拟机,在~/.docker/machine/machines/cy 目录里会创建一个配置目录。
你只需要一条创建命令,你就可以使用docker-machine的start, stop, query, manage。
2.列出我们的docker 虚拟机

$ docker-machine ls
NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
cy             *        virtualbox   Running   tcp://...

方式2 : brew install boot2docker

boot2docker配置

boot2docker init  初始化

(基本是会失败的,网速限制) 手动下载
https://github.com/boot2docker/boot2docker/releases/download/… 最新版本

cd ~/.boot2docker
 (将下载最新的镜像拷贝到此目录)
cydeMacBook-Pro:.boot2docker cy$ boot2docker init

  WARNING: The 'boot2docker' command line interface (not to be confused with
  'boot2docker' the operating system) is officially deprecated.

  Please switch to Docker Machine (https://docs.docker.com/machine/) ASAP.

  Docker Toolbox (https://docker.com/toolbox) is the recommended install method.

Generating public/private rsa key pair.
Your identification has been saved in /Users/cy/.ssh/id_boot2docker.
Your public key has been saved in /Users/cy/.ssh/id_boot2docker.pub.
The key fingerprint is:
SHA256:fYgo7+CSXZDE6w+na+RP+slEpYLJt3g9Lp7Z/2fIwFs cy@cydeMacBook-Pro.local
The key's randomart image is:
+---[RSA 2048]----+
|   .             |
|    o            |
|   . o  .        |
| . o+  + o .     |
|  +.+.+.S o .    |
|   o+Bo o E.     |
|  .=+**  = .     |
|  oo*%.o. o o    |
|   +B=O....o     |
+----[SHA256]-----+
Initialization of virtual machine "boot2docker-vm" complete.
Use `boot2docker up` to start it.

以上命令只需要执行一次即可,它创建了Docker运行所需要的虚拟机环境。以后运行的时候,需要先开启docker虚拟机

ogon:~ cy$ boot2docker start

  WARNING: The 'boot2docker' command line interface (not to be confused with
  'boot2docker' the operating system) is officially deprecated.

  Please switch to Docker Machine (https://docs.docker.com/machine/) ASAP.

  Docker Toolbox (https://docker.com/toolbox) is the recommended install method.

Waiting for VM and Docker daemon to start...
...........................ooooooooooooo
Started.
Writing /Users/cy/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/cy/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/cy/.boot2docker/certs/boot2docker-vm/key.pem

To connect the Docker client to the Docker daemon, please set:
    export DOCKER_HOST=tcp://192.168.59.103:2376
    export DOCKER_CERT_PATH=/Users/cy/.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1

Or run: `eval "$(boot2docker shellinit)"`

这样就启动了Docker的虚拟机环境,使用命令boot2docker shellinit查看Docker客户端的环境变量

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

你可以手动的执行输出的后面三条export命令设置环境变量,也可以使用下面的方法自动设置

$ eval "$(boot2docker shellinit)"

到此为止,boot2docker已经运行,并且docker的客户端环境已经建立,要验证是否成功,运行下面的命令

$ boot2docker status
running
$ docker version
Client version: 1.3.2
Client API version: 1.15
Go version (client): go1.3.3
Git commit (client): 39fa2fa
OS/Arch (client): darwin/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.4.2
Git commit (server): 7c8fca2

使用命令boot2docker ssh:
这里写图片描述
如果在执行docker命令的时候出现类似如下错误 dial unix /var/run/docker.sock: no such file or directory 是因为没有设置正确的环境变量导致的,执行命令 eval “$(boot2docker shellinit)” 重新设置环境变量即可。

基本操作

从docker hub 下载Nginx镜像

docker@boot2docker:~$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
8b87079b7a06: Pull complete
a3ed95caeb02: Pull complete
31c7abf879e0: Pull complete
4ef177b369db: Pull complete
Digest: sha256:46a1b05e9ded54272e11b06e13727371a65e2ef8a87f9fb447c64e0607b90340
Status: Downloaded newer image for nginx:latest

在DOCKER_HOST上启动一个Nginx容器

$ docker run --name some-nginx -p 8080:80 -d nginx

上述命令中,docker run命令启动一个容器运行,然后退出,-d选项指定该容器docker run命令执行完成后在后台运行。-P选项将容器开放的端口暴露给宿主机,这样我们就可以访问它们了。
其他 参考 https: //hub.docker.com/_/nginx/
要查看当前运行了哪些容器,使用docker ps命令

$ docker port some-nginx
80/tcp -> 0.0.0.0:8080

接下来访问127.0.0.1:8080,应该就能看到Nginx的欢迎页
在Mac下,使用boot2docker的时候,访问127.0.0.1是不行的,因为docker的宿主机是boot2docker的虚拟机,因此需要使用虚拟机的ip访问boot2docker ip获取ip后访问。
这里写图片描述
访问192.168.59.103:8080即可

要停止或者删除正在运行的容器,使用下列命令

$ docker stop some-nginx
$ docker rm some-nginx

要关闭boot2docker使用命令boot2docker stop。

在Container中挂载卷

当启动boot2docker的时候,它会在虚拟机上自动共享Mac上的/Users目录,在Docker容器中,可以将该目录中的内容挂载到Docker容器中。

docker@boot2docker:~$ ll /Users/
total 0
drwxr-xr-x    1 docker   staff          374 Jan  7 12:31 Guest/
drwxrwxrwx    1 docker   staff          204 Jan 13 12:13 Shared/
drwxr-xr-x    1 docker   staff         1360 May 11 14:12 cy/

在Mac的~目录中建立site/index.hml文件,如下

bogon:site cy$ ls
index.html
bogon:site cy$ pwd
/Users/cy/site
bogon:site cy$

启动docker容器

docker@boot2docker:~$ docker run --name mysite -P -v /Users/cy/site:/usr/share/n
ginx/html -d nginx
66be7bb5b8d35c30ce910e05d30baf2ae431353a3249b82605e521203e3a4c73
docker@boot2docker:~$ docker port mysite
443/tcp -> 0.0.0.0:32769
80/tcp -> 0.0.0.0:32770

这里docker run的-v参数指定了要挂载的卷,也可以使用–volume,格式为-v /host:/container。

访问http://192.168.59.103:32770/可以看到输出index.html的内容

docker@boot2docker:~$ curl http://192.168.59.103:32770
hello world!
阅读更多
文章标签: mac docker
个人分类: docker
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭