• docker-ce-17.09 网络基础配置


    一、端口映射实现访问容器

    1、我们先从pull一个nginx镜像,然后后台运行该镜像

    > docker pull nginx
    > docker run -d -P nginx:latest

    使用-P标记,docker会随机映射一个端口至容器内部开放的网络端口。

    然后在本地主机上通过32773端口就可访问容器内的服务

    如果出现如下问题:

    WARNING: IPv4 forwarding is disabled. Networking will not work.

    修改/etc/sysctl.conf,添加如下代码:

    > vi /etc/sysctl.conf
    net.ipv4.ip_forward=1

    然后重启network服务

    > systemctl restart network

    当然我们也可以自已定义映射的端口

    > docker run -d -p 8881:80 nginx:latest

    把主机的8881端口映射到容器80端口

    我们也可以指定地址来映射端口

    > docker run -d -p 192.168.137.222:8882:80 nginx:latest
    

    查看映射端口配置(676b282131f3是容器ID):

    > docker port 676b282131f3
    

    二、容器互联实现容器间通信

    容器间的连接,会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。

    1、我们先创建一个mysql容器

    > docker pull mysql
    > docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
    

    --name可以自定义容器名称

    2、再创建一个nginx容器,并连接到mysql容器

    > docker run -d -P --name nginx --link mysql:mysql nginx:latest
    

    3、我们进入nginx容器,这时我们就可以访问mysql容器

    > docker inspect --format "{{.State.Pid}}" c6b1b49cabf4
    > nsenter --target 3756 --mount --uts --ipc --net --pid
    > ping mysql

    3756表示通过第一条语句查询出的容器进程PID。

    官方默认nginx容器没有安装ping,需自行安装。

    我们也可以看看/etc/hosts下mysql到底被解析到了哪里。

  • 相关阅读:
    选择排序
    冒泡排序
    java多线程
    Java中的内存泄露的几种可能
    "==" 与 “equals”
    保证service不被杀死的方法
    反射、注解、依赖
    引导页
    适配:px与dp转换
    四 主要的几种 Web 服务器
  • 原文地址:https://www.cnblogs.com/jkko123/p/7729050.html
Copyright © 2020-2023  润新知