1、获取Nginx容器端口
首先确保 docker
正在运行:
docker-machine ls
1.1、启动进程
docker run -d -P --name web nginx
docker run
:启动一个容器-d
:后台运行容器-P
:开放容器的映射端口,方便你从Mac访问
1.2、查看容器状态
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7afc79513310 nginx "nginx -g 'daemon off" 10 hours ago Up 5 seconds 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp web
可以看到已经启动nginx服务了
1.3、查看容器端口
docker port web
443/tcp -> 0.0.0.0:32768
80/tcp -> 0.0.0.0:32769
可以看到容器的80
端口映射到容器Docker主机的32769
端口————监听主机上的32769
端口相当于监听容器的80
端口。
不过你现在访问http://localhost:32769
你会发现找不到服务;
1.4、获取VM的IP
这是因为localhost 和 docker主机不一致,你需要获得VM的IP地址。
docker-machine ip default #192.168.99.100
现在在浏览器里打开http://192.168.99.100:32769
就能看到熟悉的nginx界面了
那如何通过外面主机的公网IP查看效果呢?
STEP 1::查看主机IP
~ ifconfig | grep inet
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet6 fe80::62f8:1dff:fea9:bd98%en0 prefixlen 64 scopeid 0x4
inet 10.2.87.112 netmask 0xfffff800 broadcast 10.2.87.255
inet6 fe80::645a:84ff:fea9:1515%awdl0 prefixlen 64 scopeid 0x8
inet 192.168.59.3 netmask 0xffffff00 broadcast 192.168.59.255
inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
可以看到主机有两个IPv4的地址:一个是公网IP10.2.87.112
,一个是192.168.59.3
。(请忽略192.168.99.1
,因为还启用了另外一个虚拟机产生的)
我们希望能够通过 http://10.2.87.112:10000
或者 http://192.168.59.3:10000
能够访问到nginx的欢迎界面,直接打开是错误页面,需要进行端口映射操作。
STEP 2 : 设置端口映射
打开虚拟机设置界面,可以看到默认有一条设置了ssh的端口,是将主机的2022
端口映射到虚拟机的22
端口。为了将主机的10000
端口映射到32769
端口,我们添加一条映射规则,步骤如下:
好了现在访问 http://10.2.87.112:10000
或者 http://192.168.59.3:10000
就能看到熟悉的界面了。
参看文章:VMware NAT端口映射
1.5、关闭容器
最后关闭并移除容器的命令是
$ docker stop web
$ docker rm web
2、挂载文件夹
一旦开启 docker
之后,会自动共享/Users
文件夹。 你可以将这个文件夹挂载到容器上。
2.1、创建示例文件夹及文件
$ cd $HOME
$ mkdir site
$ cd site
$ echo "my new site" > index.html
2.2、重启nginx服务并替换Html文件夹
$ docker run -d -P -v $HOME/site:/usr/share/nginx/html --name mysite nginx
$ docker port mysite
80/tcp -> 0.0.0.0:49166
443/tcp -> 0.0.0.0:49165
在浏览器里查看效果:
2.3、实时更新内容
在$HOME/site
中添加新的文件:
$ echo "This is cool" > cool.html
2.4、暂停并移除容器
$ docker stop mysite
$ docker rm mysite