docker端口映射_网络通信_网络隔离
一、配置端口映射
(1)使用大写P将容器端口映射到宿主机的任意IP地址和任意端口
[root@centos01 ~]# docker run -it -d --name ssh -P hub.c.163.com/public/centos:6.7-tools
(2)使用小写p将容器22端口映射到宿主机的2222端口
[root@centos01 ~]# docker run -it -d --name ssh01 -p 2222:22 hub.c.163.com/public/centos:6.7-tools
(3)将容器22端口号映射到宿主机192.1681.100.10的222端口上
[root@centos01 ~]# docker run -it -d --name ssh02 -p 192.168.100.10:222:22 hub.c.163.com/public/centos:6.7-tools
(4)映射容器TCP协议22端口号宿主机IP192.168.100.10的1111端口上
[root@centos01 ~]# docker run -it -d --name ssh03 -p 192.168.100.10:1111:22/tcp hub.c.163.com/public/centos:6.7-tools
(5)查看端口映射
[root@centos01 ~]# docker port ssh03
2、配置发布mysql服务
(1)开启宿主机路由功能
[root@centos01 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@centos01 ~]# sysctl -p
(2)运行容器映射3306端口
[root@centos01 ~]# docker run -it -d --name mysql -p 192.168.100.10:3306:3306/tcp hub.c.163.com/public/centos:6.7-tools
(3)登录容器
[root@centos01 ~]# docker exec -it mysql /bin/bash
(4)容器中安装mysql
[root@ddb7fafca466 /]# yum -y install mysql mysql-server
(5)启动mysql服务设置开机自动启动
[root@ddb7fafca466 /]# service mysqld start
[root@ddb7fafca466 /]# chkconfig --level 35 mysqld on
(6)mysql设置密码登录mysql
[root@ddb7fafca466 /]# mysqladmin -uroot password pwd@123
[root@ddb7fafca466 /]# mysql -uroot -ppwd@123
(7)授权登录mysql
mysql> grant all on *.* to 'root'@'192.168.100.10' identified by 'pwd@123';
(8)宿主机登录容器中的mysql
[root@centos01 ~]# yum -y install mysql
[root@centos01 ~]# mysql -h 192.168.100.10 -uroot -ppwd@123
测试:在容器中的mysql创建一个benet数据库,在宿主机中登录容器的mysql进行查看
二、docker网络管理
(1)创建容器共享宿主机网络
[root@centos01 ~]# docker run -d --network=bridge --name centos01 hub.c.163.com/public/centos:6.7-tools
(2)配置docker容器不需要连网
[root@centos01 ~]# docker run -d --network=none --name centos02 hub.c.163.com/public/centos:6.7-tools
(3)配置容器和宿主机保持同步
[root@centos01 ~]# docker run -d --network=host --name centos04 hub.c.163.com/public/centos:6.7-tools
[root@centos01 ~]# docker exec -it centos04 /bin/bash
[root@centos01 /]# yum -y install httpd
启动httpd设置开机自动启动:
[root@centos01 /]# service httpd start
[root@centos01 /]# chkconfig --level 35 httpd on
访问容器里的80端口:
3、docker网络隔离
(1)查看docker网络名称空间
[root@centos01 ~]# docker network ls
(2)创建网络名称空间名称是lamp
[root@centos01 ~]# docker network create -d bridge lamp
(3)创建容器连接到网络名称空间上
[root@centos01 ~]# docker run -it -d --name lamp01 --network=lamp hub.c.163.com/public/centos:6.7-tools
[root@centos01 ~]# docker run -it -d --name lamp02 --network=lamp hub.c.163.com/public/centos:6.7-tools
(4)登录lamp01容器
[root@centos01 ~]# docker exec -it lamp01 /bin/bash
(5)登录lamp02容器
[root@centos01 ~]# docker exec -it lamp02 /bin/bash
使用lamp02容器pinglamp01容器是否能ping通:ping 172.18.0.2
使用ssh01容器pinglamp01容器是ping 不通的(因为不在网络名称空间上)
[root@centos01 ~]# docker exec -it ssh01 /bin/bash
ping 172.18.0.2

浙公网安备 33010602011771号