一, docker容器镜像制作命令
1, docker commit {容器名称} {镜像名称}
——不推荐使用
2, dockerfile
——推荐使用(以nginx为例)
-
docker里面本身有一个Dockerfile文件,里面包含一系列指令可以理解为一个启动脚本
- 新建一个nginx目录,在目录下新建一个Dockerfile文件,并配置nginx相关shell命令
- 在nginx目录下新建一个html目录,在html目录下新建一个index.html文件,里面配置nginx首页的内容(该文件目录对应上面的COPY命令配置)
- 在nginx目录下新建一个html目录,在html目录下新建一个index.html文件,里面配置nginx首页的内容(该文件目录对应上面的COPY命令配置)
- 新建一个nginx目录,在目录下新建一个Dockerfile文件,并配置nginx相关shell命令
-
docker build -t my-nginx .
:把工作目录nginx下的所有文件加载到docker,nginx必须为独立保存Dockerfile的目录
3,dockerfile指令详解
参考文档: 纯干货!Docker Dockerfile指令大全(非常详细)零基础入门到精通,收藏这一篇就够了-CSDN博客
-
FROM :指定继承自哪个基础镜像
-
RUN :运行shell命令
-
ADD/COPY :复制文件
-
USER :指定运行用户
-
ENTRYPOINT :指定容器启动命令
-
ENV :指定环境变量
-
Dockerfile文件内容:
FROM centos:7
ADD entrypoint.sh /root (entrypoint.sh为工作目录路径的脚本)
USER root
RUN yum install -y wget vim
RUN yum install -y vim wget
RUN yum install -y wget vim git
RUN yum install -y wget
RUN yum install -y openssh-server openssl
RUN yum install wget vim
RUN yum install git vim
USER jenkins (容器读取的是最后一个USER命令的用户)
WORKDIR /root (容器启动后默认的指定目录)
ENv JAVAHOME=XXXX (配置环境变量)
ENTRYPOINT ["/bin/bash", "/root/entrypoint.sh"]
- Dockerfile文件内容来源:
路径:在dockerhub或者GitHub网站上搜索对应的镜像,可以找到对应的Dockerfile文件及内容
二, docker搭建镜像仓库
-
1,创建一个目录registry,作为存放镜像数据的路径
-
2,执行
docker pull registry
命令,拉取最新版本的Registry镜像
-
3,执行以下命令将Registry容器与之前创建的目录进行关联
docker run -d --restart=always -p 5000:5000 --name my-registry \
-v /registry:/var/lib/registry \
registry
* 指定了容器名称为 my-registry,同时将宿主机的 /registry 目录映射到容器内部的 /var/lib/registry 目录中
- 4,使用Docker命令将镜像推送到仓库中
docker tag <image_id> localhost:5000/<image_name>:<tag>
docker push localhost:5000/<image_name>:<tag>
-
5,查看本地镜像仓库:
curl http://localhost:5000/v2/_catalog
-
6,浏览器查看nginx首页是否修改成功