jck28 - 小柒 - Docker容器镜像制作

一, docker容器镜像制作命令

1, docker commit {容器名称} {镜像名称} ——不推荐使用

2, dockerfile ——推荐使用(以nginx为例)

  • docker里面本身有一个Dockerfile文件,里面包含一系列指令可以理解为一个启动脚本

    • 新建一个nginx目录,在目录下新建一个Dockerfile文件,并配置nginx相关shell命令
      image
      • 在nginx目录下新建一个html目录,在html目录下新建一个index.html文件,里面配置nginx首页的内容(该文件目录对应上面的COPY命令配置)
        image
  • docker build -t my-nginx . :把工作目录nginx下的所有文件加载到docker,nginx必须为独立保存Dockerfile的目录

3,dockerfile指令详解

  • 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>