Docker网络和存储
本节内容:
- Docker网络访问
- 端口映射
- 数据管理
一、Docker网络访问
1. docker自带的网络
- docker network ls:列出当前docker中已有的网络
- docker network inspect:查看网络详情,比如查看网络中有哪些容器
- docker run --network=<NETWORK>:指定运行容器时使用哪个网络
2. host网络
容器的网络接口跟主机一样。
3. none网络
除了lo接口外,容器没有任何其他网络接口。
4. bridge网络
这是新建容器时默认使用的网络,也是使用得最多的网络。网络中的所有容器可以通过IP互相访问。
bridge网络通过网络接口docker0跟主机桥接,可以在主机上通过ifconfig docker0查看到该网络接口的信息。


二、端口映射
docker使用端口映射来让容器里面某一个端口对外。一种是随机映射,一种是指定端口映射。
1. 随机映射
docker run -P
-P参数 随机映射端口。随机端口的好处是不会冲突。
举个例子:
[root@node1 ~]# docker pull nginx
[root@node1 ~]# docker run -d -P nginx


可以访问Docker日志:
[root@node1 ~]# docker logs 1822a2ea3ff3
172.16.4.81 - - [/Aug/::: +] "GET / HTTP/1.1" "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36" "-"
// :: [error] #: * open() "/usr/share/nginx/html/favicon.ico" failed (: No such file or directory), client: 172.16.4.81, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "172.16.7.151:32768", referrer: "http://172.16.7.151:32768/"
172.16.4.81 - - [/Aug/::: +] "GET /favicon.ico HTTP/1.1" "http://172.16.7.151:32768/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36" "-"
2. 指定端口映射
docker run -p hostPort:containerPort
docker run -p ip:hostPort:containerPort
docker run -p ip::containerPort
docker run -p hostPort:containerPort:udp
-p 指定端口映射,前面的是主机端口,后面的是容器端口。
[root@node1 ~]# docker run -d -p : nginx

三、数据管理
两种方式:
- 数据卷
- 数据卷容器
1. 数据卷
启动一个容器,把宿主机的某个目录挂载到容器目录上。
- -v /data
- -v src:dst 指定一个目录挂载进容器。
【示例1】:未指定宿主机目录挂载
[root@node1 ~]# docker run -it --name volume-test1 -v /data centos
[root@5d485979254b /]# ls -l /data
total
这个容器里的/data 肯定在宿主机的某个位置。打开一个新的终端,查看这个位置:
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d485979254b centos "/bin/bash" minutes ago Up minutes volume-test1 test
[root@node1 ~]# docker inspect 5d485979254b

在宿主机上的目录中创建文件:
[root@node1 ~]# cd /var/lib/docker/volumes/7f37e83849f079275545b7d1f3381903795e946d113e1c43ff24fc1a7717e00f/_data
[root@node1 _data]# ls -l
total
[root@node1 _data]# touch test.txt
回到容器中,查看/data目录下是否有刚才创建的文件:
[root@5d485979254b /]# ls -l /data
-rw-r--r--. root root Aug : test.txt
【示例2】:指定宿主机目录挂载
[root@node1 ~]# docker run -it -v /opt:/opt centos
[root@850031902bb7 /]# ls /opt/
ansible_playbooks rh
[root@850031902bb7 /]# exit
exit
宿主机的/opt:
[root@node1 ~]# ls /opt
ansible_playbooks rh
挂载的时候可以指定权限:
[root@node1 ~]# docker run -it -v /opt:/opt:rw centos
rw: 读写
ro: 只读
挂载单个文件到容器:
[root@node1 ~]# docker run -it -v ~/.bash_history:/.bash_history centos
2. 数据卷容器
--volumes-from 让一个容器访问另外一个容器的卷
【示例3】:创建一个容器作为数据卷,启动其他容器访问这个容器的卷。
[root@node1 ~]# docker run -it --name nfs -v /data centos /bin/bash
[root@72bb5caa54db /]#
Ctrl+P Ctrl +Q退出交互式容器的bash,这样容器就会在后台运行。
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72bb5caa54db centos "/bin/bash" seconds ago Up seconds nfs
[root@node1 ~]# docker inspect 72bb5caa54db
[root@node1 ~]# cd /var/lib/docker/volumes/8f1e1da837d5d86f79ac14e5d57c0e47243e3c68d5ca822d4f7a498386c07a59/_data
[root@node1 _data]# touch test2.txt
启动其他容器,访问这个容器的卷:
[root@node1 _data]# docker run -it --name test1 --volumes-from nfs centos
[root@9097c1af8e86 /]# ls /data/
test2.txt
[root@9097c1af8e86 /]#
这个数据卷容器可以用来作收容器间数据共享,哪怕这个数据卷容器nfs停了,依然可以通过其在宿主机上真实的目录访问里面的数据。这个数据卷容器创建后可以什么都不干,直接关闭,其他容器挂载过来。
Docker网络和存储的更多相关文章
- Docker网络与存储(三)
Docker的网络和存储 1.1 Docker的4种网络模式 host模式,使用--net=host指定. container模式,使用--net=container:NAME_or_ID指定. no ...
- Docker——网络和存储(数据卷)
iptables -t nat -vnL |grep docker 查看docker桥接网卡:brctl show 本地端口随机映射到docker容器的80端口上: docker run -d -P ...
- 理解Docker(5):Docker 网络
本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- Docker网络模式
[编者的话] 本文是<Docker网络及服务发现>一书的一个章节,介绍了搭建Docker单主机网络的基础内容.关于Docker网络的更多内容,包括多主机的网络,请参考该书的其他章节. @C ...
- docker网络解析
Docker概念和默认网络 什么是Docker网络呢?总的来说,网络中的容器们可以相互通信,网络外的又访问不了这些容器.具体来说,在一个网络中,它是一个容器的集合,在这个概念里面的一个容器,它会通过容 ...
- Docker 网络之进阶篇
笔者在<Docker 基础 : 网络配置>一文中简单介绍了容器网络的基本用法,当时网络的基本使用方式还处于 --link 阶段.时过境迁,随着 docker 的快速发展,其网络架构也在不断 ...
- Docker 网络背后的原理探索
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 知其然而不知其 ...
- Docker网络解决方案 - Calico部署记录
简单来说,实现docker跨主机容器间通信,常用的第三方网络方案是Flannel,Weave,Calico:Flannel会为每个host分配一个subnet,容器从这个subnet中分配ip,这些i ...
- Docker网络解决方案 - Weave部署记录
前面说到了Flannel的部署,今天这里说下Docker跨主机容器间网络通信的另一个工具Weave的使用.当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来.容器在不同主机之间都使用的 ...
随机推荐
- nltk31_twitter情感分析
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&am ...
- nltk_28Twitter情感分析模型
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...
- android中倒计时控件CountDownTimer分析
android中倒计时控件CountDownTimer分析 1 示例代码 new CountDownTimer(10000, 1000) { public void onTick(long milli ...
- Spring知识总结
一.Spring简述 Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架,Spring致力于提供一种方法管理你的业务对象,Spring的主要目的是使JavaE ...
- Java并发编程原理与实战十六:AQS
一.概述 谈到并发,不得不谈ReentrantLock:而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)! 类如其名,抽象的队列式的同步器,AQ ...
- ASP.NET中的另类控件
首先看一个aspx文件里的部分内容: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- 洛谷P3960 [NOIP2017] 列队
数据结构题还是挺好玩的 注意到每次只变动三个点:(x,y),(x,m),(n,m),其他地方都是整块移动. 可以开n+1个线段树,前n个存每行前m-1个人,最后一个存第m列的人. (x,y)位置的人出 ...
- HDU 4707 Pet 邻接表实现
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4707 解题报告:题目大意是在无向图G中有n个点,分别从0 到n-1编号,然后在这些点之间有n-1条边, ...
- 训练赛第三场A题 zoj 559
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2559 解题报告:比赛的时候的想法是可以确定至少有两对相切的圆,所 ...
- AAC编码
1. 前言 如果说目前H.264是视频CODEC的实际霸主,那么AAC就是音频CODEC的女王.主流的音视频格式都是H.264搭配AAC,无论是非实时的媒体文件还是实时的媒体流. 2. AAC历史 A ...