标签:
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
上述命令查看端口映射
注意:
docker inspect
可以获取所有的变量,Docker 还可以有一个可变的网络配置。)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一致:
标签:
原文地址:http://www.cnblogs.com/tingfengainiaini/p/4679468.html