docker入门实战(理论+实践)系列
docker可以存在自身的网络配置和数据卷管理方式,首先docker容器作为一个独立的运行单元,可以有独立的IP地址、端口等信息。同时,nginx是无状态的,当docker重启之后,容器会恢复到初始化镜像状态(即docker是无状态的),生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作,数据卷的存在实现了宿主机和docker容器之间的数据共享,本篇文章以nginx容器为例进行。nginx pull nginx
http://s1.运维网.com/images/20181109/1541735125144306.png
1、docker网络配置
docker run指定网络参数
-P 宿主机和docker容器之间的端口映射采用随机端口映射
-p 指定映射
http://s1.运维网.com/images/20181109/1541737021422732.png
(1)随机端口映射
docker run -d -P nginx-----采用随机端口映射启动nginx容器
如下图,docker容器采用了宿主机的32768映射到docker容器的80端口
http://s1.运维网.com/images/20181109/1541737122758503.png
此时通过宿主机IP:port,可以访问到nginx
http://s1.运维网.com/images/20181109/1541737272810335.png
(2)指定端口映射
docker run -d -p 3333:80 --name nginx-demo nginx------启动nginx容器,宿主机的3333映射到docker容器的80端口
http://s1.运维网.com/images/20181109/1541737351491855.png
2、数据卷管理
docker提供了宿主机和docker容器共享的文件的机制:数据卷和数据卷容器。
容器中管理数据主要有两种方式:
(1)、数据卷(Data Volumes):容器内数据直接映射到本地主机环境;如何在容器内创建数据卷,并且把本地的目录或文件挂载到容器内的数据卷中。
(2)、数据卷容器(Data Volume Containers):使用特定容器维护数据卷。如何使用数据卷容器在容器和主机、容器和容器之间共享数据,并实现数据的备份和恢复。
docker 容器挂载数据的三种方式:volume、bind mount、tmpfs,其中volume是本文重点将的
http://s1.运维网.com/images/20181109/1541739577518518.png
数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount操作。
数据卷可以提供很多有用的特性,如下所示:
(1)、数据卷可以在容器之间共享和重用,容器间传递数据将变得高效方便;
(2)、对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作;
(3)、对数据卷的更新不会影响镜像,解耦了应用和数据;
(4)、卷会一直存在,直到没有容器使用,可以安全地卸载它。
http://s1.运维网.com/images/20181109/1541737458725529.png
将宿主机的/data目录挂载到docker容器的/data目录下面
docker run -d --name nginx-test2 -v /data/:/data nginx
http://s1.运维网.com/images/20181109/1541738098344457.png
3、数据卷容器
数据卷容器是数据持久化的一种方式,使用数据卷容器,需要创建一个数据卷容器
docker run -d --name volume-demo -v /data/:/data nginx------创建一个volume容器,将宿主机的/data目录挂载到容器内部的/data目录
我们启动一个nginx-volume-demo容器,采用--volumes-from 指定数据卷容器
docker run -d --name nginx-volume-demo --volumes-from volume-demo nginx
http://s1.运维网.com/images/20181113/1542103281460559.png
采用数据卷容器有一个特点,即使数据卷容器停止或者挂掉,使用数据卷容器的容器仍然可以使用挂载的目录:
http://s1.运维网.com/images/20181113/1542103456314889.png
页:
[1]