云计算Docker网络使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云计算Docker网络使用相关的知识,希望对你有一定的参考价值。

参考技术A

在容器中运行的网络应用,需要让外部可以访问这些应用,我们可以通过

参数来指定端口映射。

使用命令运行nginx,-P指令随机映射一个端口映射容器内部端口

我们使用 docker ps 或者 docker container ls 可以看到,宿主机的49154端口被映射到了容器的80端口,此时通过访问宿主机的49154就可以访问nginx默认页面

语法格式:

OPTIONS注解:

首先我们先将我们之前运行的容器全部删除

我们可以使用docker link链接容器,避免容器重启ip地址变化的问题

格式如下:

我们进入mycentos2容器

查看容器的hosts,发现了别名webcentos的ip地址

ping mycentos1 容器的ip别名 webcentos ,发现容器可以ping通

docker创建以后默认使用的是Linux的 桥连接 ,在宿主机上虚拟创建了一个容器 网桥 (docker0),使用 ip addr 查看

Docker每启动一个容器就会根据 docker0 的网段分配给容器一个IP地址,这个网桥docker0是所有容器的默认网关。因为宿主机内容器都使用网桥docker0,所以容器可以使用IP进行通信。

Docker就是很好的利用了Linux虚拟网络技术,在宿主机和容器内分别创建一个虚拟接口,实现他们彼此联通.

网络模式配置说明 bridge模式--net=bridge 默认使用 ,在docke的默认网桥docker0上为容器创建网络 none模式--net=none不配置网络,用于稍后进入容器,自行配置网络 container模式--net=container:name/id容器可以和应一个容器共享network namespace,k8s的pod使用此模式 hots模式--net=host容器和宿主机共享Network namespace 用户自定义--net=createnet用户使用network相关指令创建网络

Docker的container模式是指,创建容器的时候,使用--net=container:name/id,指定创建的容器和已经有的容器共享一个Network Namespace。

docker网络的host模式容器和宿主机共享Network namespace

默认选择bridge模式,容器启动后通过网桥docker0获取ip地址

我们首先使用 docker network 创建一个新的docker网络

-d指定docker的网络模型,有 bridge、overlay ,然后overlay网络模型使用的是Swarm mode。

使用ping来证明mycentos6容器和mycentos5可以相互链接

同理在mycentos5可以和mycentos5相互链接


云计算 docker 容器使用命令

技术图片

docker 使用命令:

docker version     查看docker版本号
vi  /etc/docker/daemon.json
{
   "registry-mirrors": ["https://registry.docker-cn.com"]
}    配置docker镜像加速  

docker run -d -p 80:80 nginx   启动一个容器
run(创建并启动一个容器)
-d 放在后台
-p 端口映射
nginx docker镜像的名字
docker镜像管理命令:
docker search XXXX 搜索镜像 默认搜索官方网站 hub.docker.com 这是官方仓库地址 docker pull (push) centos:
6.9 没有指定版本会默认下载最新版本 docker pull doacloud.io/huangzhichong/alpine-cn:latest 这是从私有仓库下载 docker images 查看镜像列表 docker rmi 例子:docker image rm centos:latest 删除镜像 docker save 例子:docker image save centos -o docker_centos7.4.tar.gz 导出镜像 docker load 例子:docker image load -i docker_centos7.4.tar.gz 导入镜像
docker的容器管理:
docker run -d -p 80:80 nginx:latest
run (创建并运行一个容器)
-d 放在后台
-p 端口映射
nginx docker镜像的名字
docker run -it --name centos6 centos:6.9 /bin/bash
-it 分配交互式的终端
--name 指定容器的名字
/bin/bash 覆盖容器的初始命令
docker run xxx 运行容器
docker start xxx 启动容器
docker stop xxx 停止容器
docker kill xxx 杀死容器
docker ps (-a -l -q) 查看容器列表
*** 进入容器推荐使用方法如下
docker exec (会分配一个新的终端tty)
docker exec -it 容器名字或者容器id /bin/bash (/bin/sh)
docker attach (使用同一个终端) 可以查看另外使用这个容器的工程师的操作 偷偷离开快捷键 ctel+p,ctrl+q
docker rm xxx 删除容器
docker rm -f `docker ps -a -q` 批量全部删除容器
******* 总结 :docker容器内的第一个进程(初始命令)必须一直处于前台运行的状态(必须夯住),否则这个容器就会处于退出状态
业务在容器中运行:初始命令,夯住,启动服务

 docker容器的网络访问(端口映射):
docker0:172.17.0.1   jumpserver:172.17.0.2   nginx:172.17.0.3
指定映射(docker 会自动添加一条iptables规则来实现端口映射)
?    -p hostPort:containerPort
?    -p ip:hostPort:containerPort  多个容器都想使用8080端口
?    -p ip::containerPort(随机端口)
?    -p hostPort:containerPort/udp
?    -p  10.0.0.100::53/udp   使用宿主机的10.0.0.100这个ip地址的随机端口的udp协议映射容器的udp53端口
?    -p 81:80 –p 443:443 可以指定多个-p
随机映射
?    docker run -P (随机端口)
通过iptables来实现的端口映射
例子:docker run -d -p 80:80 nginx -p 宿主机端口:虚拟机端口 可以一次性加多个 -p参数指定
例子:docker run -d -p 80:80 -p 443:443 nginx
docker run -P (随机端口) 大P

docker的数据卷管理:

/usr/share/nginx/html
-v  /opt/xiaoniao:/usr/share/nginx/html
持久化
数据卷(文件或目录)
?    -v 卷名:/data (第一次卷是空,会容器的数据复制到卷中,如果卷里面有数据,把卷数据的挂载到容器中)
?    -v src(宿主机的目录):dst(容器的目录)
数据卷容器
?    –volumes-from(跟某一个已经存在的容器挂载相同的卷)
?    
基于nginx启动一个容器,监听80和81,访问80,出现nginx默认欢迎首页,访问81,出现小鸟。
-p 80:80 -p 81:81 -v  xxx:xxx  -v  xxx:xxxx
基于nginx多站点。
例子:
docker run -d -p 80:80 -p 81:81 -v /opt/xiaoniao:/usr/share/nginx/html nginx:latest

以上是关于云计算Docker网络使用的主要内容,如果未能解决你的问题,请参考以下文章

云计算Docker网络使用

Docker和云计算的关系是啥?

云计算Docker云平台—Docker进阶

Docker和云计算的关系是啥?

docker知识点-下篇(2018马哥云计算)

云计算核心技术Docker教程:Docker存储写入时复制(CoW)策略