1.配置本机Docker运行镜像加速器(7.x++)

修改配置文件

vim  /etc/docker/daemon.json

写入以下内容,并保存退出

{ 
"registry-mirrors": ["https://cyowm7vy.mirror.aliyuncs.com"]
 }
systemctl daemon-reload

重新启动Docker后台服务

systemctl restart docker

Linux系统下配置完加速器需要检查是否生效

ps -ef|grep docker

运行hello-world

docker hello-world

2.DockerFile是什么?

Dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本。

构建三步走

编写DockerFile文件---> docker build---> docker run

Dockerfile内容基础知识

1.每条保留字指令都必须为大写字母且后面要跟随至少一个参数。
2.指令按照从上到下,顺序执行
3.#表示注释
4.每条指令都会创建一个新的镜像层,并对镜像进行提交

执行的大致流程

1.docker从基础镜像运行一个容器
2.执行一条指令并对容器作出修改
3.执行类似docker commit的操作提交一个新的镜像层
4.docker再基于刚提交的镜像运行一个新容器
5.执行dockerfile中的下一条指令直到所有指令都执行完成

3.DockerFile保留字指令(常用)

1.FROM

基础镜像,当前镜像是基于哪个镜像

2.MAINTAINER

镜像维护者的姓名和邮箱地址

3.RUN

容器构建时需要运行的命令

4.EXPOSE

当前容器对外暴露出的端口号

5.WORKDIR

指定在创建容器后,终端默认登录的进来的工作目录,一个落脚点

6.ENV

用来在构建镜像过程中设置环境变量

7.ADD

将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

8.COPY

类似ADD,拷贝文件和目录到镜像中,无自动解压功能
将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
写法:(1)COPY src dest (2)COPY[“src”,”dest”]

9.VOLUME

容器数据卷,用于数据保存和持久化工作

10.CMD

指定一个容器启动时要运行的命令
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。
(1)shell格式: CMD <命令>
(2)exec格式: CMD [“可执行文件”,“参数1”,“参数2”,…]

11.ENTRYPOINT

指定一个容器启动时要运行的命令
与CMD一样,都是在指定容器启动程序及参数。CMD会被docker run之后的参数追加。

12.ONBUILD(触发器)

当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

4.Docker容器数据卷用DockerFile添加

DockerFlie对镜像的源码级的描述

1.根目录下创建mydocker文件夹并进入(宿主机)

mkdir /mydocker
cd /mydocker

2.可在dockerfile中使用volume指令来给镜像添加一个或多个数据卷

vi ./dockerfile

3.DockerFile编写

FROM centos  
VOLUME [“/dataVolumeContainer1”,”/dataVolumeContainer2”]   
CMD echo “finished,------success1”
CMD /bin/bash

4.build后生成镜像

docker build -f /mydocker/dockerfile -t god007/centos.

获得新镜像god007/centos

5.run容器

docker run -it god007/centos

到这里就可以查看到两个卷了

pwd

ll

容器内的卷地址有了,对应的主机目录也有是默认的。

docker inspect 容器ID

查找其中的Volumes,找到对应的默认地址目录
注:Docker挂载主机目录Docker访问出现cannot open directory.:Permission denied 解决办法:在挂载目录后多加个–privileged=true参数即可

5.自定义镜像mycentos

目标:使镜像具有登录后的默认路径,vi编译器,查看网络配置ifconfig支持
1.查看默认的Centos镜像是怎样的(运行并进入容器查看)
2.准备编写Dockerfile文件

vi /mydocker/dockerfile

3.mycentos内容Dockerfile
文件如下:

FROM centos
MAINTAINER god007<2337563298@qq.com>
#作者名与邮箱
ENV MYPATH  /usr/local
# 设置变量
WORKDIR $MYPATH
# 指定默认路径
RUN yum -y install vim
RUN yum -y install net-tools
# 下载
EXPOSE 80
# 向外暴露80端口
CMD echo $MYPATH
# 打印环境变量
CMD echo “succes-----------------ok”
# 打印成功的标志
CMD  /bin/bash

4.构建

Docker build -t 新镜像名:TAG.
docker bild -f /mydocker/Dockerfile . -t mycentos:1.5.

例如:

docker build -t first/httpd -f HttpFirstfile .
docker build -t second/httpd -f HttpSecondfile .
docker images

5.运行

docker run -it mycentos:1.5

6.列出镜像的变更历史

docker history 镜像名
docker history mycentos:1.5

docker 一键部署lnmp docker dockerfile快速部署环境_docker


之后,会出一篇关于dockerfile的具体案例!

感谢大家,点赞,收藏,关注,评论!