今天小编给大家分享一下Docker如何使用Dockerfile来创建镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.dockerfile1.1基本案例dockerfile可以说是docker的描述符,该文件定义了docker镜像的所能拥有哪些东西.基本格式如下:该文件说明从java8这个基础镜像创建一个新的镜像,输出java路径,启动成功则启动nginx服务,这也是一个dockerfile需要包含的操作步骤.1.2指令详解1.from:格式为 from
命令格式为:
sh格式: cmd
exec格式:cmd [“可执行文件”,”参数1”,”参数2”]
一般都是早就写好的脚本或者启动一个服务,例如:cmd[“/run.sh”]。注意:如果dockerfile中指定了多条命令,只有最后一条会被执行。如果用户启动时候加了运行的命令,则会覆盖掉cmd指定的指令。这里有一个问题,很多时候 香港云主机我们想要docker一直在后台运行,但是往往docker启动后就停止.原因就在于此.
比如执行cmd serice mysql start,那么翻译过来的话是cmd [“sh”,”-c”,”serice mysql start”],那么对于docker来说cmd主进程为sh,那么sh执行完该命令就结束,所以导致docker停止.所以要改成直接启动文件形式cmd [“mysql”,”-g”,””daemon off;],指定前台运行.5.expose:告诉docker服务端容器需要暴露的端口号,供互联系统使用。在启动容器时需要通过-p(注意是大写),docker主机会自动分配一个端口转发到指定的端口;使用-p,则可以具体指定哪个本地端口映射过来。
例如:我在elasticsearch镜像的dockerfile中指定了暴露出9200和9300端口,我可以在dockerfile中写:expose 9200 93006.env:创建的时候给容器中加上个需要的环境变量。指定一个值,为后续的run指令服务7.copy:复制本地的文件或目录到容器中。目标路径不存在时,会自动创建。8.entrypoint:配置容器启动后执行的命令,并且不可被docker run 提供的参数覆盖。
每个dockerfile中只能有一个entrypoint,当指定多个entrypoint时,只有最后一个生效9.volume:创建一个挂在点,可以从本机或其他容器挂载的挂载点。意思就是从容器中暴露出一部分,和外界共享这块东西,一般放数据库的数据或者是代码。在容器启动运行的时候,如果需要将volume暴露的东西和本地的一个文件夹进行映射,想要通过本地文件直接访问容器中暴露的部分,可以在运行的时候进行映射:10.user:指定运行容器时的用户名或者uid,后续的run也会使用指定的用户。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户。
要临时获取管理员权限的时候要使用gosu,不推荐使用sudo。如果不指定,容器默认是root运行。11.workdir:定义工作目录,如果容器中没有此目录,会自动创建创建指令docker build 路径,该命令会读取路径下的dockerfile文件和其他文件,然后发送给服务端,由服务端创建镜像.2.创建ssh服务镜像2.1准备java8环境后续教程需要利用到java8环境,因此先下载一个官方的java8镜像作为基础镜像.直接执行如下命令.可以利用之前的教程,启动容器查看下java路径.2.2编写dockerfilessh服务主要是openssh-server来提供,因此需要在容器中安装该服务.
dockerfile:run.sh拷贝本机的id_ras执行构建构建成功后使用docker images
即可查看,然后像上篇一样启动容器,暴露出端口,再使用ssh连接,和一般linux系统就没什么差别了.
以上就是“Docker如何使用Dockerfile来创建镜像”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注开发云行业资讯频道。
相关推荐: String,StringBuffer,StringBuilder区别是什么
本篇内容主要讲解“String,StringBuffer,StringBuilder区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。 香港云主机下面就让小编来带大家学习“String,StringBuffer,StringBuild…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。