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
之后,会出一篇关于dockerfile的具体案例!
感谢大家,点赞,收藏,关注,评论!