**前言:**在本篇文章里,我们主要记录总结在学习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保存为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的构建过程:
- 从基础镜像运行一个容器
- 执行指令对容器做出修改
- 执行类似commit操作提供新的镜像
- 我们根据新的镜像运行新的容器
02-容器的网络连接
apt-get install -y net-tools
apt-get install -y inetutils-ping #安全ping工具
分别在容器1和容器2中执行以上命令,并且进行网络IP地址查询,可得到如下结果:
此时使用容器2去Ping容器1,发现是可以Ping通的(Docker使用虚拟网桥进行连接,但是每次重启的话IP会变)
如何解决虚拟网桥重启的:
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服务和容器即可。