dockerfile
dockerfile:用来构建docker images的源码,docker通过读取dockerfile的指令来完成镜像文件的构建。
构建dockerfile必须要有一个专门的工作目录,此目录只存放dockerfile和dockerfile制定需要复制的文件。
使用build构建images的时候,只需指定dockerfile所在的目录即可,而dockerfile的名字也只能是dockerfile。
dockerfile的格式:
1 | #Comment |
dockerfile的每一条指令都会生成一个专有的单一的镜像层。镜像层越多越精细,就越容易容器之间的共享,但是性能也会相应的变低。原则:把做同一件事的多个语句放在一条指令中。
build阶段,基于基础镜像做目标镜像的过程,此过程会隐式启动容器。
dockerfile也可以定义环境变量:使用ENV定义环境变量,使用$variable_name或${variable_name}来引用环境变量。
.dockerignorefile:docker build会忽略此文件以及此文件中包含的文件。
Dockerfile Instructions:
1 | FROM |
docker镜像的分发
在本机打包docker镜像
1 | [root@node01 secimg]# docker image save setimg:v0.1 testimg:v0.1 -o myimgs.tar |
将打包的镜像传到目标服务器
1 | [root@node01 secimg]# scp myimgs.tar master: |
在目标服务器上加载镜像
1 | [root@slave-node01 ~]# docker image load -i myimgs.tar |
docker registry
Registry用于保存docker镜像,包括镜像的层次结构和元数据。
用户可以自建registry,也可以使用官方的docker hub
使用docker-distribution创建私有仓库
创建私有仓库
1 | [root@node01 build_workshop]# yum -y install docker-distribution |
docker-distribution的配置文件
1 | version: 0.1 |
启动docker-distribution
1 | [root@node01 build_workshop]# systemctl start docker-distribution |
向私有仓库放置镜像
先给镜像打标签
1 | [root@slave-node01 ~]# docker tag testimg:v0.1 node01:5000/myimg:v0.1 |
docker默认只允许https协议想registry推送镜像,如果要使用http协议推送镜像,需要在配置文件中加入以下内容:
1 | [root@slave-node01 docker]# vi daemon.json |
推送镜像
1 | [root@slave-node01 docker]# docker push node01:5000/myimg |
使用docker harbor创建私有仓库
安装docker-compose
1 | [root@node02 ~]# yum -y install docker-compose |
下载docker harbor的离线安装包
1 |