zoukankan      html  css  js  c++  java
  • docker-网络模式

    Docker自身的4种网络工作方式,和一些自定义网络模式
    安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host
    host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
    Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
    None:该模式关闭了容器的网络功能。
    Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信
     
     
    让外部网络访问容器中web服务
    思路:首先使用centos镜像新建一个容器,然后在该容器中安装web服务,并启动再把该容器导成一个新的镜像(centos-httpd),然后再使用新镜像(centos-httpd)创建新的容器,并指定端口映射供外部访问。
     
    1:新建容器指定名称httpd,并在容器安装web服务(Nginx)
    [root@host1 ~]# docker run -itd --name nginx centos bash
    910043992a8e734debe42a04e5d21e6a595a1c7dea2a6550c66128a02cd1dea1
     
    进入容器安装web服务
    [root@host1 ~]# docker exec -it 910043 bash
    [root@910043992a8e /]# yum -y install epel-release
    [root@910043992a8e /]# yum -y install nginx
     
    2:web服务安装完成后,将已安装web服务的httpd容器导出新的镜像为centos_httpd
    [root@host1 ~]# docker commit -m "install nginx" -a "test" 910043992a8e centos_httpd
    sha256:b2a4963d29cfd6c2a1d44f23af0a08395f1d210872e37fc49c1d7f7a57d66e79
    [root@host1 ~]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    centos_httpd latest b2a4963d29cf 9 seconds ago 412MB
    centos latest 1e1148e4cc2c 9 months ago 202MB
     
    3:使用centos_httpd镜像新建一个容器,并指定8088端口映射为容器中的80端口新建容器启动
    语法:docker run -itd --privileged -e "container=docker" -p 【宿主机端口】:【容器端口】 【镜像名】 /usr/sbin/init
    说明:-p后面格式是IP:port:IP:port,或者127:0.0.1::port,这里两个冒号,表示随机分配主机一个端口映射;如果nginx启动报错误Failed to get D-Bus connection: Operation not permitted,因为dbus-daemon没有启动导致,解决方法:新建容器时加上--privileged -e "container=docker" ,并且最后面的命令改为/usr/sbin/init。
    [root@host1 ~]# docker run -itd --privileged -e "container=docker" -p 8088:80 centos_httpd /usr/sbin/init
    3bbdb44c307851f2fdf5d3927dbfc4f2f3a78dc69357687b492d416317b3cecb
    [root@host1 ~]# docker exec -it 3bbdb44 bash
    [root@3bbdb44c3078 /]# systemctl start nginx
    [root@3bbdb44c3078 /]# echo "Hell Word" > /usr/share/nginx/html/1.txt
     
    4:退出容器后,用curl命令测试本机8088端口是否可以访问容器的80端口内容
    [root@host1 ~]# curl localhost:8088/1.txt
    Hell Word
  • 相关阅读:
    【44.64%】【codeforces 743C】Vladik and fractions
    【47.40%】【codeforces 743B】Chloe and the sequence
    Java Web整合开发(18) -- Struts 2.x 标签
    os、sys及shutil
    Linux 下模拟Http 的get or post请求(curl和wget两种方法)
    密码正则
    主键唯一键重复插入解决方法
    php验证是否是中文
    nginx找不到php文件
    cannot get gid for group ‘nobody’
  • 原文地址:https://www.cnblogs.com/douyi/p/11573760.html
Copyright © 2011-2022 走看看