云计算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网络使用的主要内容,如果未能解决你的问题,请参考以下文章