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.10222端口上

[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.101111端口上

[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

posted @ 2020-07-19 13:08  回忆的旋律  阅读(336)  评论(0)    收藏  举报