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的使用.当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来.容器在不同主机之间都使用的 ...
随机推荐
- Java入门:使用Java API
什么是Java类库 在编写程序的时候,通常有很多功能是通用的,或者是很基础的,可以用这些功能来组成更发杂的功能代码.比如文件操作,不同程序对文件的操作基本都是一样的,打开文件,关闭文件,读取文件里面的 ...
- LigerUI下拉选择列表LigerComboBox中tree的节点初始化默认选中的问题
问题描述 用后台的Json传送tree的数据 前端用js方法来控制选中节点 此方法存在bug 实例: bug问题:无论设置的默认选中值是多少个,前台checkbox最多只显示选中一个,但是内容框中显示 ...
- python的reduce函数的使用方法详解以及使用案例,相加,相乘(处理一个序列,然后把序列进程合并操作)
1.求列表的数字相加之和,还是之前的习惯,写for循环来实现 num_1=[1,2,3,4,5,6,7,8,9] a=0 for n in num_1: #a=a+n a+=n print (a) C ...
- 最短路径算法的实现(dijskstra):Python
dijskstra最短路径算法步骤: 输入:图G=(V(G),E(G))有一个源顶点S和一个汇顶点t,以及对所有的边ij属于E(G)的非负边长出cij. 输出:G从s到t的最短路径的长度. 第0步:从 ...
- P4310 绝世好题
P4310 绝世好题 题目描述 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). 说明 对于100%的数据,1<=n ...
- Java基础-程序流程控制第一弹(分支结构/选择结构)
Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...
- Java基础-位运算符Bitwise Operators
Java基础-位运算符Bitwise Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.位运算特点 位运算符分为按位与(&),按位或(|),按位异或(^ ...
- Linux根目录解析
根目录结构如下: 1. / - 根目录: 每一个文件和目录都从这里开始. 只有root用户具有该目录下的写权限.此目录和/root目录不同,/root目录是root用户的主目录. 2. /bin - ...
- 【精选】Ubuntu 14.04 安装Nginx、php5-fpm、ThinkPHP5.0(已经测试上线)
sudo apt-get update 安裝Nginx https://www.vultr.com/docs/setup-nginx-rtmp-on-ubuntu-14-04 安裝完成後,Nginx的 ...
- Java并发编程原理与实战十六:AQS
一.概述 谈到并发,不得不谈ReentrantLock:而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)! 类如其名,抽象的队列式的同步器,AQ ...