**前言:**在本篇文章里,我们主要记录总结在学习docker文件构建、备份、网络连接、数据连接过程中的相关知识点,力求完善的学习Docker相关的数据管理工作。

01-Docker构建与备份

Docker主要有两种构建方法,一种是自己手动构建,另外一种是通过dockerfile去自动化构建,Docker 的构建脚本 Dockerfile 是纯文本文件,所以可以使用 git 等版本控制工具进行管理。
基本的构建DockerFfile构架内容如下:

From ubuntu:latest #选择从哪个镜像去构建
MAINTAINER dormancyprocess "xxx@qq.com" #写上自己的联系方式
RUN apt-get update
RUN apt-get install -y nginx #运行指定命令
EXPOSE 80 #开放80端口

然后可以开始构建容器

docker build -t [自己的镜像名:tag] [dockerfile的目录]

此时Docker构建成功

表格管理系统 docker_表格管理系统 docker

如果想要本地保存docker,可以使用如下命令:

# 将docker保存为tar文件
docker save -o save.tar [镜像名:tag]
# 恢复tar文件
docker load --input ubweb1.tar

和容器Dockerfile有关的指令如下:

• From [镜像名:Tag]:指定镜像名
• MAINTAINER [标签] :给镜像一个命令
• RUN [命令] :当前镜像执行什么命令
• EXPOSE [端口] :镜像使用什么端口
• CMD :在容器运行的时候执行什么命令
• ENTRYPORT [命令]:不会被Docker的命令覆盖
• ADD :有类似tar的功能
• COPY :自己的文件复制到虚拟机的文件中
• COPY xxx.php /root/var/www/html/index.php
• VOLUME :卷
• VLOME [“本地目录”,“容器目录”]
• CMD /bin/bash
• WORKDIR:在容器内部设置工作目录
• ENV [key]=[value]
• USER uid:gid
• ONBUILD:镜像触发器
• 当此镜像被其他镜像作为基础镜像执行时,插入指定

Dokerfile的构建过程:

  1. 从基础镜像运行一个容器
  2. 执行指令对容器做出修改
  3. 执行类似commit操作提供新的镜像
  4. 我们根据新的镜像运行新的容器

02-容器的网络连接

apt-get install -y net-tools
apt-get install -y inetutils-ping #安全ping工具

分别在容器1和容器2中执行以上命令,并且进行网络IP地址查询,可得到如下结果:

表格管理系统 docker_容器_02


此时使用容器2去Ping容器1,发现是可以Ping通的(Docker使用虚拟网桥进行连接,但是每次重启的话IP会变)

表格管理系统 docker_表格管理系统 docker_03


如何解决虚拟网桥重启的:

docker run -d --name web1 --link web2:w2 -p 80 --it [镜像名:Tag] /bin/bash

后续在web1中ping w2即可,无论web2如何改变。
如果想要容器之间无法访问:

mkdir /etc/default/docker
DOCKER_OPTS="--icc=false" #隔离容器
DOCKER_OPTS="--icc=false --iptables=true" #可以使用防火墙对他进行访问
iptables -F #清空防火墙,之后重启Docker服务

如果想要看容器和外部网络是否可以转发

sysctl net.ipv4.conf.all.forwarding

03-容器的数据管理

Docker容器的数据卷在容器创建的时候初始化,我们对数据卷的修改是即时进行的。
数据卷映射方法如下:

docker run -v ~/[本机目录]:[容器目录] -it 镜像名:tag /bin/bash #映射卷
docker run -v ~/[本机目录]:[容器目录]:ro  -it 镜像名:tag /bin/bash #映射卷

如果想使用数据卷容器,具体方法如下:

docker run --volumes-from [容器名]
docker run -it --name testg --volumes-from [容器名] 镜像名:tag /bin/bash

如果想要对数据卷进行备份,具体方法如下:

docker run --volumes-from [备份的容器名] -v [本地位置]:[容器位置]:wr --name [名字] ubuntu
tar cvf /容器中的位置/backup.tar [/容器中需要备份的目录]

如果想要对数据卷进行还原,具体方法如下:

docker run --volumes-from web1-v ~/backup:/backup --name weblbackup ubuntu:latest
/backup/test1.tar /datavolumel

04-容器端口映射

在之前的操作中,我们可能部署了多个容器,其80端口上都开放了相关的Web服务,因此我们需要通过端口映射,将容器中的网页映射到不同的服务器端口上。
一种方法是新建容器时就指定映射:

docker run -d -p 8000:80  [imagename] /bin/sh

另外一种方法是修改容器配置文件:

docker ps -a #找到目标容器ID
docker stop [容器id]
systemctl stop docker
cd /var/lib/docker/containers/[容器ID]
#修改hostconfig.json和config.v2.json 
具体执行流程见Runoob OR CSDN

修改完配置文件后重启Docker服务和容器即可。