一、从外部访问容器应用

1、端口映射实现访问容器
root@docker-test:~# docker run -d -P training/webapp python app.py
61975c6a1981e829a7edb8e07d24c849aad7132c80e14338e6aaab4d12d25021
root@docker-test:~# docker ps -l
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                     NAMES
61975c6a1981        training/webapp:latest   "python app.py"     8 seconds ago       Up 7 seconds        0.0.0.0:32783->5000/tcp   furious_pasteur   
大写的-P。会随机映射一个49000-49900的端口至容器内部开放的网络端口
小写的-p,则指定固定端口
上面的ps -l看出,本地的32783端口被映射到了容器的5000端口,访问宿主机的32783端口即可访问容器内web应用提供界面
通过我宿主机的IP地址进行访问 http://192.168.89.130:32783/
2、通过docker logs查看应用的信息
root@docker-test:~# docker logs -f furious_pasteur
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.89.1 - - [12/Aug/2017 12:58:34] "GET / HTTP/1.1" 200 -
192.168.89.1 - - [12/Aug/2017 12:58:35] "GET /favicon.ico HTTP/1.1" 404 -
192.168.89.1 - - [12/Aug/2017 12:59:56] "GET / HTTP/1.1" 200 -
3、映射所有接口地址
将本地的5000端口映射到容器的5000端口
docker run -d -p 5000:5000 training/webapp python app.py #此时会绑定本地所有接口上的所有地址
4、映射到指定地址的指定端口
docker run -d -p 192.168.89.130:5000:5000 training/webapp python app.py
5、映射到指定地址的任意端口
docker run -d -p 192.168.89.130::5000 training/webapp python app.py
6、查看映射端口配置
root@docker-test:~#
root@docker-test:~# docker port testweb
5000/tcp -> 0.0.0.0:32782
root@docker-test:~# docker port web
5000/tcp -> 0.0.0.0:32781
root@docker-test:~# docker ps -a
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                     NAMES
61975c6a1981        training/webapp:latest   "python app.py"     14 minutes ago      Up 14 minutes       0.0.0.0:32783->5000/tcp   furious_pasteur     
235a7f166a79        training/webapp:latest   "/bin/bash"         33 minutes ago      Up 33 minutes       0.0.0.0:32782->5000/tcp   testweb             
6c498fba9a26        training/webapp:latest   "/bin/bash"         40 minutes ago      Up 40 minutes       0.0.0.0:32781->5000/tcp   web                 
39d71abc194d        ubuntu:latest            "/bin/bash"         About an hour ago   Up About an hour                              db2                 
593de70961a0        ubuntu:latest            "/bin/bash"         About an hour ago   Up About an hour                              db1                 
a6a32f7838ee        ubuntu:latest            "/bin/bash"         About an hour ago   Up About an hour                              dbdata              
root@docker-test:~# docker port 61975c6a1981
5000/tcp -> 0.0.0.0:32783
root@docker-test:~#
二、自定义容器命名
1、自定义容器命名
root@docker-test:~# docker run -d -P --name web training/webapp python app.py  #使用--name选项
2、查看设定后的命名
root@docker-test:~# docker ps -l
3、使用inspect查看指定容器ID的容器的名字
root@docker-test:~# docker inspect -f "` `.`Name `" 382b382521b5
二、容器互联(实现容器间通信)
使用--link参数可以让容器之间安全的进行交互
创建一个新的数据库容器进行演示
1、创建并运行数据库容器,名称为db
root@docker-test:~# docker run -d --name db training/postgres #如本地没有training/postgres镜像,则会自动从docker hub搜索到镜像并下载
2、创建完成之后查看一下
root@docker-test:~# docker ps -a
CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS              PORTS                     NAMES
19f67a71ac16        training/postgres:latest   "su postgres -c '/us   2 minutes ago       Up 2 minutes        5432/tcp                  db        
3、然后创建一个新的web容器,并将它连接到db容器
root@docker-test:~# docker run -d -P --name web --link db:db training/webapp python app.py
3ac18b1df0d487c99b0f07e2fd273c53ad7b6f5beb29b830985c89fd6df40241
4、查看创建的两个docker容器(web容器和db容器)
root@docker-test:~# docker ps -a
CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS              PORTS                     NAMES
3ac18b1df0d4        training/webapp:latest     "python app.py"        6 seconds ago       Up 4 seconds        0.0.0.0:32769->5000/tcp   web                 
651b10778678        training/postgres:latest   "su postgres -c '/us   2 minutes ago       Up 2 minutes        5432/tcp                  db