码迷,mamicode.com
首页 > 其他好文 > 详细

docker入门小结 (二)

时间:2015-07-27 12:26:07      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

11,网络使用

sudo docker run -d -P training/webapp python app.py
sudo docker ps -l

这样将主机一个端口映射到容器中,由于app.py文件中使用了绑定5000端口操作。本地主机的49000~49900中随即一个端口 被映射到了容器的 5000 端口。此时访问本机的随机出来的端口即可访问容器内 web 应用提供的界面。但是实际测试中,却是使用了32769端口,如图:

技术分享

sudo docker run -d -p 10000:5000 training/webapp python app.py

该命令-p 映射本机的端口到容器指定端口。-p支持的格式有多种,另外可以指定为udp端口

ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
sudo docker port sad_ritchie

上述命令查看端口映射

技术分享

注意:

  • 容器有自己的内部网络和 ip 地址(使用 docker inspect 可以获取所有的变量,Docker 还可以有一个可变的网络配置。)
  • -p 标记可以多次使用来绑定多个端口
sudo docker run -d -P --name web training/webapp python app.py

--name 指定容器命名

可以使用 ps或者docker inspect 来查看容器的名字,使用inspect查看时需要指定容器的id

sudo docker inspect -f "{{ .Name }}" aed84ee21bde

注意:容器的名称是唯一的。如果已经命名了一个叫 web 的容器,当你要再次使用 web 这个名称的时候,需要先用docker rm 来删除之前创建的同名容器。

在执行 docker run 的时候如果添加 --rm 标记,则容器在终止后会立刻删除。注意,--rm 和 -d 参数不能同时使用。

如果进行容器互联使用--link命令:

--link 参数的格式为 --link name:alias,其中 name 是要链接的容器的名称,alias 是这个连接的别名。

sudo docker run -d --name db training/postgres
sudo docker run -d -P --name web --link db:db training/webapp python app.py
$ docker ps
CONTAINER ID  IMAGE                     COMMAND               CREATED             STATUS             PORTS                    NAMES
349169744e49  training/postgres:latest  su postgres -c /usr  About a minute ago  Up About a minute  5432/tcp                 db, web/db
aed84ee21bde  training/webapp:latest    python app.py         16 hours ago        Up 2 minutes     

Docker 在两个互联的容器之间创建了一个安全隧道,而且不用映射它们的端口到宿主主机上。在启动 db 容器的时候并没有使用 -p 和 -P 标记,从而避免了暴露数据库端口到外部网络上。

Docker 通过 2 种方式为容器公开连接信息:

  • 环境变量
  • 更新 /etc/hosts 文件

查看容器环境变量env:

sudo docker run --rm --name web2 --link db:db training/webapp env

技术分享

除了环境变量,Docker 还添加 host 信息到父容器的 /etc/hosts 的文件。

sudo docker run -t -i --rm --link db:db training/webapp /bin/bash
root@aed84ee21bde:/opt/webapp# cat /etc/hosts

技术分享

 2 个 hosts,第一个是 web 容器,web 容器用 id 作为他的主机名,第二个是 db 容器的 ip 和主机名。 

ping测试连通性,这里db的ip地址同上面web中给出的db的ip一致:

技术分享

 

docker入门小结 (二)

标签:

原文地址:http://www.cnblogs.com/tingfengainiaini/p/4679468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!