您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

DockeFIile知识点总结和发布自己的镜像

时间:2021-07-05 09:42:15  来源:今日头条  作者:石老师小跟班

Dockerfile的基本认识

1. dockerfile的基本定义

`dockerfile`是一个包含用于组合镜像的命令的文本文档,可以在命令中调用任何命令,
  docker通过读取Dockerfile中的指令自动生成镜像

2.dockerfile的基本结构

`dockerfile`一般分为四部分:
  基本镜像信息,
  维护者信息,
  镜像操作指令,
  容器启动时的执行指令,
  `#`为`dockerfile`中的注释3

3.dockerfile的常用指令

常用指令一般都要大写

DockeFIile知识点总结和发布自己的镜像

 

FROM:指定基础镜像,必须是第一个命令

#格式:

FROM image

FROM image:tag

FROM image@digest

#如

FROM MySQL:5.7 #如不指定tag或digest,则使用lastest版本

MAINTAINER:维护者信息

#格式

MAINTAINER name+email

MAINTAINER name

MAINTAINER email

#如

MAINTAINER jame 123@gmail.com

RUN:构建镜像时执行的命令

#格式

RUN command

#如

RUN ["executable","param1","param2"]

#RUN指令创建的中间镜像会被缓存,并会下次构建中使用,如果不想使用,可以使用 --no-cache参数,如:

docker build --no-cache

ADD:将本地文件添加到容器中

#格式

ADD src dest

ADD ["src",...,"desc"] #用于支持包含空格的路径

#如

ADD test /mydir

ADD test?.txt /mydir

ADD t* /mydir

COPY功能和ADD类似,区别如下

#区别

ADD 对于添加tar类型文件,可以自动解压

ADD 可以访问网络资源

COPY 不可自动解压也不可访问网络资源

CMD:构建容器这后使用

#格式

CMD ["executable","param1","param2"]

CMD command parma1 param2

#如

CMD echo "hello"

#CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,RUN是用于指定镜像构建时所有使用的执行的命令

ENTRYPOINT:配置容器,与CMD类似

#格式

ENTRYPOINT ["executable","param1","param2"]

ENTRYPOINT command param2,param3

#如

ENTRYPOINT ["top","-b"]

#与CMD不同点

#docker run 执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当作参数再次传递给ENTRYPOINT,Dockerfile中只允许有一个ENTRYPOINT命令,多指定会覆盖前面的设置,而只执行最后的ENTRYPOINT指令

LABEL:用于为镜像添加元数据

#格式

LABEL key=value key=value ...

#如

LABEL version=1.0 description="hello world"

#使用LABEL指定元数据时,一条LABEL可以指定一或多条元数据,多条元数据通过空格分格

ENV:设置环境变量

#格式

ENV key value #这种格式的只能设置一个变量

ENV key=value #可以设置成多个

#如

ENV name centos

ENV name=123

EXPOSE:指定与外界交互的端口

#格式

EXPOSE port ...

#如

EXPOSE 80,443

EXPOSE 11211/tcp 11211/udp

#EXPOSE并不会让容器的端口访问到主机,需要在docker run运行时通过 -p 来发布这些端口,或者通过-P参数来发布EXPOSE导出的所有端口

VOLUME:用于指定持久化目录

#格式

VOLUME ["/path/to/dir"]

#如

VOLUME ["/data"]

VOLUME ["/var/www","/var/log/test"]

#一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统

#卷可以容器间共享和重用

#容器并不一定要和其它容器共享卷

#修改卷后会立即生效

#对卷的修改不会对镜像产生影响

#卷会一直在,直到没有容器使用它

WORKDIR:工作目录,类似于CD命令

#格式

WORKDIR /path

#如

WORKDIR /a #这时工作目录为/a

#设置WORKDIR工作目录里,Dockerfile中其后的命令,RUN,CMD,ENTRYPOINT,ADD,COPY等命令都会在这个目录执行

USER:指定运行容器时的用户名或UID,后面的RUN也会使用指定用户,当服务不需要管理员权限时,可以通过该命令指定运行用户

#格式

USER user

USER user:group

USER uid

USER gid

USER uid:gid

USER uid:group

#如

USER www

#使用USER指定用户后,Dockerfile中其后的命令RUN,CMD,ENTRYPOINTf都将使用这个用户

ARG:用于指定传递给构建运行时的变量

#格式

ARG name

ARG name=valuue

#如

ARG site

ARG name=123

ONBUILD:用于设置镜像触发器

#格式

ONBUILD [INSTRUCTION]

#如

ONBUILD ADD ./App

#当所构建的镜像被用作其它镜像的基础镜像,该镜像中的触发器会被触发

实战:定制自己的 centos

由于官方centos里没有vim ,ficonfig等工具,先来个简单点的学习一下,从打包到发布的流程,后面再构建Nginx,php,mysql,redis各自的dockerfile文件,搭建自己的开发环境 !

编写dockerfile文件

#dockerfile文件如下

FROM centos #基础镜像

#MAINTANER 123 123@gmail.com 现在官方推荐使用 LABEL标签使用

LABEL maintaner=123@gmail.com

#设置环境变量

ENV PATH=/usr/local

#设置工作目录

WORKDIR $PATH

#创建容器时执行的命令

RUN yum install -y vim && yum -y net-tools

#暴露端口

EXPOSE 80

# 镜像构建完成后执行的命令

CMD echo "===success======="

#以/bin/bash运行

CMD /bin/bash

通过dockerfile构建镜像

#使用命令 docker build 命令

#常用参数如下:

-f #指定dockerfile文件

-t #指定镜像标签

#打包命令如下,注意最后那个点别丢了,代表当前目录

docker bulid -f mydockerfile -t mycentos:1.0 .

DockeFIile知识点总结和发布自己的镜像

 

查看镜像构建的过程,可以使用docker history 镜像id来查看

#查看一下nginx的构建过程

docker history nginx

DockeFIile知识点总结和发布自己的镜像

 

发布自己的镜像

发布地址: Dockerhub,阿里云

 

发布到Dokerhub上

  1. 注册账号并登录
  2. 在服务器上向Dockerhub提交

#使用 docker login 命令登录

#使用 docker push 发布镜像

使用 docker login -u 用户名 -p 密码

登录成功如下:

DockeFIile知识点总结和发布自己的镜像

 

使用 docker push 命令发布镜像到dockerhub,结果报错

denied: requested access to the resource is denied

#解决办法:

在build自己的镜像的时候添加tag时必须在前面加上自己的dockerhub的username,然后再push就可以了

#我这里使用 docker tag 命令修改标签

#命令如下:

docker tag mycentos:1.0 lnssm/mycentos:1.0

#再push就可以了

docker push lnssm/mycentos:1.0

发布到阿里云,国内速度快

  1. 登录阿里云控制台
  2. 搜索容器镜像服务->实例列表->个人实例->命令空间新建
DockeFIile知识点总结和发布自己的镜像

 

创建完命名空间后,打开镜像仓库,创建镜像仓库,选择本地仓库

DockeFIile知识点总结和发布自己的镜像

 

根据官方给的文档开始提交就可以,这里就不截图了



Tags:DockeFIile   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
dockerfile的基本认识1. dockerfile的基本定义`dockerfile`是一个包含用于组合镜像的命令的文本文档,可以在命令中调用任何命令, docker通过读取Dockerfile中的指令自动生...【详细内容】
2021-07-05  Tags: DockeFIile  点击:(127)  评论:(0)  加入收藏
▌简易百科推荐
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  实战Java    Tags:Docker   点击:(10)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  编程菌zfn    Tags:Docker   点击:(10)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  无    Tags:docker   点击:(47)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  小码哥聊软件测试    Tags:Docker   点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  抓蛙程序猿    Tags:docker   点击:(48)  评论:(0)  加入收藏
环境:Spring5.3.10通常,应用程序开发人员不需要对ApplicationContext实现类进行子类化。相反,SpringIOC容器可以通过插入特殊集成接口的实现来扩展。使用BeanPostProcessor自定...【详细内容】
2021-10-26  Java网络研发架构师    Tags:Spring   点击:(33)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  运维贼船    Tags:docker   点击:(61)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  程序狗爱化妆    Tags:Nacos   点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  晋升奶爸的垃圾佬    Tags:Docker   点击:(167)  评论:(0)  加入收藏
环境要求 ubuntu系统:20.04 docker版本:20.10.7 redis版本:6.0.6步骤由于我这里已经有相应的redis镜像,这里就不记录了,关于docker一些基础知识可以看我以前的笔记开启3台re...【详细内容】
2021-07-26  石老师小跟班    Tags:Redis主从复制   点击:(117)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条