美文网首页
【6.5】docker基础知识 仓库使用/构建镜像

【6.5】docker基础知识 仓库使用/构建镜像

作者: 王滕辉 | 来源:发表于2022-03-24 10:57 被阅读0次

【3.2】服务器安装 Docker中 仓库搭建中已经介绍了仓库相关的搭建,
【6.1】docker基础知识 镜像中也介绍了镜像相关的使用,包括从仓库中查询拉取镜像,推送新镜像的相关操作。

接下来看下构建镜像
构建Docker镜像有以下两种方法:

使用docker commit命令。
使用docker build命令和 Dockerfile 文件。

docker commit 在 【3.12】服务器安装 Docker中安装与配置 Solr中介绍到 使用solr镜像启动容器然后修改ik,mysql和一些配置文件最后commit 制作成新的镜像文件。说白了就是执行中的容器经过一些修改,为了保留这些修改,将容器实例化为镜像的过程。docker commit 就是将这些修改操作变成镜像的一部分,如果使用新的镜像启动容器,那么这些修改依然是生效的。

docker build 是构建容器的一种方法,搭配Dockerfile可以快速完成镜像的修改创建。使用docker build 必须要会Dockerfile的编写,这里参照https://www.cnblogs.com/panwenbin-logs/p/8007348.html讲解,以下是一个完整的例子

# This my first nginx Dockerfile
# Version 1.0

# Base images 基础镜像
FROM centos

#MAINTAINER 维护者信息
MAINTAINER wang

#ENV 设置环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

#ADD  文件放在当前目录下,拷过去会自动解压
ADD nginx-1.21.6.tar.gz /usr/local/  
ADD epel-release-latest-7.noarch.rpm /usr/local/  

#RUN 执行以下命令 
RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www

#WORKDIR 相当于cd
WORKDIR /usr/local/nginx-1.8.0 

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install

RUN echo "daemon off;" >> /etc/nginx.conf

#EXPOSE 映射端口
EXPOSE 80

#CMD 运行以下命令
CMD ["nginx"]

按照顺序讲解下

FROM 基于那个镜像修改的,必须位于第一位置出现
MAINTAINER 是进行描写维护者信息的。一般出现在第二位置。
ENV 设置环境变量,
ADD 下载文件,如果文件时tar压缩格式,会自动解压缩。
COPY 和ADD类似 ,COPY仅能从主机上复制文件或文件夹。
WORKDIR 工作目录,相当于cd。之后的命令都会在这个目录下执行。
RUN 执行命令,RUN有两种写法,一种是 RUM a b 一种是 RUN ["a","b"]

参照:https://blog.csdn.net/wuce_bai/article/details/88997725
CMD 执行命令,与RUN类似都是执行命令,区别在于CMD是容器正常启动时运行的命令,所以CMD 一般在最后出现,且只有最后一个CMD生效。docker run 的时候可以被替换掉。
支持三种格式

CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;
CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;

ENTRYPOINT 与CMD类似,在容器启动时运行,只能有一条命令生效,区别在于不能被替换掉可以传递参数,可以搭配CMD使用

两种格式:

ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2(shell中执行)。

LABEL 用于为镜像添加元数据,例如LABEL key=value key1=value1推荐所有的数据写在一条
EXPOSE 对外暴露端口通过-P 或-p

EXPOSE 80 443
EXPOSE 8080
EXPOSE 11211/tcp 11211/udp

VOLUME 用于指定持久化目录 格式VOLUME ["/path/to/dir"]
USER 指定运行容器时的用户名或 UID
ARG 用于指定传递给构建运行时的变量,格式ARG <name>[=<default value>]
ONBUILD 用于设置镜像触发器。当所构建的镜像被用做其它镜像的基础镜像,该镜像中的触发器将会被触发。ONBUILD 本次不会被触发。

编写完Dockerfile 使用build就可以构建新镜像了
docker build -t image-name:image-version DockerfilePath
例如 docker build -t solr-ik-mysql:0.0.1 .

点波关注 系统搭建(docker)

相关文章

  • 【6.5】docker基础知识 仓库使用/构建镜像

    在 【3.2】服务器安装 Docker中 仓库搭建[https://www.jianshu.com/p/d27e...

  • 使用docker构建nexus3私服

    使用 docker 构建 Nexus 3 Maven仓库 拉取Docker镜像 启动Docker容器

  • Docker

    构建镜像仓库 Docker运行java程序 1.1.6 搭建docker私有仓库 新建私有仓库 1.2.1 数据挂...

  • Docker部署(二):MySQL数据库

    Docker 容器构建 使用Dockerfile构建镜像 使用官方提供的Docker镜像 所谓Dockerfile...

  • 容器(5)--Docker 仓库--2.Docker-regis

    镜像的私有仓库 Docker官方提供了docker-registry组件,我们可以用它来构建我们的私有镜像仓库。安...

  • docker常见命令

    docker pull 命令含义:从镜像仓库中下载镜像到本地(使用docker images可以看到的),镜像仓库...

  • Docker命令汇总

    构建镜像docker build -t 仓库名:标记 .例:docker build -t docker.io/j...

  • Harbor搭建(一)

    背景 Docker Registry 作为镜像仓库,没有管理界面,使用起来不方便,还有什么 Docker 镜像仓库...

  • Docker搭建私有仓库之Harbor

    Docker搭建私有仓库之Harbor Harbor Harbor是构建企业级私有docker镜像的仓库的开源解决...

  • Docker

    [TOC] 使用 Docker 镜像 下载镜像 列出镜像 构建镜像 删除本地镜像 操作 Docker 容器 容器是...

网友评论

      本文标题:【6.5】docker基础知识 仓库使用/构建镜像

      本文链接:https://www.haomeiwen.com/subject/utxydrtx.html