Dockerfile
写Dockerfile的目的是为了创建属于自己的镜像。
流程为:
1,写Dockerfile。
2,将Dockerfile中需要用到的文件上传到与Dockerfile同一目录下或者其子目录下。
3,使用这个Dockerfile来构建一个镜像。
以下分别说明
dockerfile的书写格式
//dockerfile书写格式为:Dockerfile(首字母大写),建议一个目录下面只有一个Dockerfile文件
//FROM:构建镜像有两种方式:一种是scratch(从0构建),另一种基于某个镜像开始构建(服务镜像或系统镜像都可以)例如nginx。
docker镜像具有缓存特性
//如果在相同的层,用到相同的镜像,可以不必再去下载,直接使用缓存。
//即使镜像层里的操作一样,也必须是在同一层才可以使用dockerfile的缓存特性。
//即使镜像层里的操作一样,第一层内容就不相同,下面的内容相同,也是不可以使用缓存的
注意:如果在制作镜像过程中不想使用缓存,只需要在构建镜像的时候,加上–no-cache选项。
//常用指令,以nginx为例
1,FROM:构建镜像基于哪个镜像
FROM nginx
2,MAINTAINER:镜像维护者姓名或者邮箱地址
MAINTAINER test01
3,RUN:构建镜像时运行的shell命令
RUN yum -y install nginx
4,CMD:运行容器时执行的shell命令
5,EXPOSE:声明容器的服务端口
EXPOSE 80
6,ENV:设置容器环境变量
7,ADD:拷贝文件或目录到镜像,如果是URL或者压缩包会自动下载或者解压
ADD file01 /usr/share/nginx/html
8,COPY:拷贝文件或目录到镜像容器内,跟ADD类似,但不具备自动下载或解压功能
9,ENTRYPOINT:运行容器时执行的shell命令
10,VOLUME:指定容器挂载点到宿主机自动生成的目录或其他容器(防止容器死亡,造成数据丢失)
11,USER:为RUN,CMD,ENTRYPOINT执行命令指定运行用户
12,WORKDIR:为RUN,CMD,ENTRYPOINT,COPY,ADD设置工作目录,意思为切换目录
WORKDIR:/usr/share/nginx/html (相当于cd命令)
13,HEALTHYCHECK:健康检查
14,ARG:构建时指定的一些参数
注意:CMD和ENTRYPOINT在运行container时是有冲突的,只能写一条,如果写多条,最后一条生效
构建镜像
docker build -t test .
搭建一个私有仓库的容器
//我们首先下载一个镜像,registry
docker pull registry:2
docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2
-p:端口映射 宿主机端口:容器暴露端口
-v:挂载目录 宿主机的目录:容器内的目录
–restart=always:重启docker时,自动开启容器
//修改docker的配置文件
vim /usr/lib/systemd/system/docker.service
修改位置为红框内的
//重启dokcer
systemctl daemon-reload
systemctl restart docker
其他主机加入该仓库的方法
//修改其他主机的docker的配置文件,位置/usr/lib/systemd/system/docker.service
修改的内容与仓库所在主机完全一致,重启docker即可。