准备
先准备一对容器,用于连接。
客户端
$ docker run -i -t -d --name=client_setup ubuntu:18.10 /bin/bash /* 客户端 */
$ docker attach client_setup /* 连接之 */
# apt-get update /* 更新 */
# apt-get upgrade /* 升级 */
# apt-get install curl /* 在容器内安装curl */
# exit /* 退出 */
$ docker stop client_setup /* 停止 */
$ docker commit client_setup client_img /* 提交 */
服务器
$ docker run -i -t -d --name=server_setup ubuntu:18.10 /bin/bash /* 服务器 */
$ docker attach server_setup /* 连接之 */
# apt-get update /* 更新 */
# apt-get upgrade /* 升级 */
# apt-get install apache2 /* 在容器内安装apache */
# exit /* 退出 */
$ docker stop server_setup /* 停止 */
$ docker commit server_setup server_img /* 提交 */
确认
$ docker images /* 查看本地镜像,确认提交成功 */
端口公开
$ ifconfig docker0 /* 检查网桥
$ docker run -i -t -d --expose=80 --name=server1 server_img /bin/bash /* 启动服务器镜像,名为server1,公开80端口 */
$ docker attach server1 /* 连接之 */
# /etc/init.d/apache2 start /* 启动apache */
# apt-get install net-tools /* 安装net-tools */
# ifconfig /* 查看ip */
$ docker run -itd --name=client1 client_img /bin/bash /* 启动客户端镜像,名为client1 */
$ docker attach client1 /* 连接之 */
$ curl 172.17.0.2 /* 在客户端访问服务器 */
端口绑定
$ ifconfig docker0 /* 检查网桥
$ docker run -itd -p 8080:80 --name=server2 server_img /bin/bash /* 绑定到主机8080端口 */
$ docker attach server2 /* 连接之 */
# /etc/init.d/apache2 start /* 启动apache */
通过宿主系统的浏览器访问http://localhost:8080,即可访问server2中的apache2。
容器链接
$ docker run -itd --name=server3 server_img /bin/bash /* 启动服务器 */
$ docker attach server3 /* 连接之 */
# /etc/init.d/apache2 start /* 启动apache */
$ docker run -itd --link server3 --name=client3 client_img /bin/bash /* 启动客户端,链接到服务器 */
$ docker attach client3 /* 连接之 */
# curl server3 /* 通过客户端访问浏览器 */
# env | grep SERVER3 /* 检查环境变量,理解服务器和客户端的关系 */
用户定义网络
$ docker network ls /* 查看网络 */
$ docker network create backend /* 创建网络,名为backend */
$ docker network ls /* 再次查看,确认创建成功 */
$ docker run -itd --net=backend --name=server server_img /bin/bash /* 启动服务器,指定网络 */
$ docker attach server /* 连接之 */
# /etc/init.d/apache2 start /* 启动apache */
$ docker run -itd --net=backend --name=client client_img /bin/bash /* 启动客户端,指定网络 */
$ docker attach client /* 连接之 */
# curl server /* 通过客户端访问浏览器 */
多主机网络
另文探讨。