本文学习Dcokerfile的基本命令,并且创建一个支持ssh服务的镜像.

1.Dockerfile
1.1基本案例
dockerfile可以说是docker的描述符,该文件定义了docker镜像的所能拥有哪些东西.基本格式如下:
第一行指定该镜像基于的基础镜像(必须) FROM java:8 维护者信息 MAINTAINER quding niudear@foxmail.com 镜像操作指令 RUN echo $JAVA_HOME 启动时操作的命令 CMD ./usr/sbin/nginx
该文件说明从Java8这个基础镜像创建一个新的镜像,输出Java路径,启动成功则启动nginx服务,这也是一个Dockerfile需要包含的操作步骤.
1.2指令详解
1.FROM:格式为 FROM <image>或FROM<image>:<tag>第一条指令必须是FROM指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)。
2.MAINTAINER:格式为MAINTAIER,指定维护者信息。
3.RUN:格式为RUN <command>或者RUN [“executable”,“param1”,“param2”]。前者将在shell终端中运行的命令,即/bin/sh–c;后者则使用exec执行。指定使用其他终端可以通过第二种方式实现,例如RUN[“/bin/bash”,“-c”,“echohello”]。每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用\来换行。这实际上就是在容器构建时需要执行哪些指令,例如容器构建时需要下拉代码,但是默认启动的容器中是没有Git指令的,就需要下载,可以执行:RUN apt-get install -y git,然后RUN git clonexxxx
4.CMD:指定容器启动后执行的命令
命令格式为:
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 9300
6.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路径.
docker pull java:8
2.2编写Dockerfile
ssh服务主要是openssh-server来提供,因此需要在容器中安装该服务.
Dockerfile:
#显示该镜像是基于java8镜像 FROM java:8 #维护人信息 MAINTAINER quding niudear@foxmail.com #更新源 RUN apt-get update #安装软件 RUN apt-get install -y openssh-server RUN mkdir -p /var/run/sshd RUN mkdir -p /root/.ssh #取消pam限制 RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd #复制配置文件到相应位置 COPY authorized_keys /root/.ssh/authorized_keys COPY run.sh /run.sh #赋予脚本权限 RUN chmod 755 /run.sh #开放端口 EXPOSE 22 #设置启动命令 CMD ["/run.sh"]
run.sh
#!/bin/bash /usr/sbin/sshd -D
拷贝本机的id_ras
cat ~/.ssh/id_rsa.pub >authorized_keys //用来免密的
执行构建
docker build -t sshd:java .
构建成功后使用docker images即可查看,然后像上篇一样启动容器,暴露出端口,再使用ssh连接,和一般Linux系统就没什么差别了.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# dockerfile创建镜像
# docker
# 创建镜像
# dockerfile构建镜像
# 详解docker中Dockerfile指令创建镜像
# docker官方镜像下载及使用Dockerfile创建镜像的方法
# Docker File创建镜像失败ERROR [3/4] RUN&nb
# 镜像
# 多个
# 格式为
# 创建一个
# 暴露出
# 服务端
# 将在
# 时需
# 可以通过
# 可以使用
# 定了
# 本机
# 新源
# 该文件
# 有一个
# 都是
# 是一个
# 我在
# 就在
# 也会
相关文章:
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
招商网站制作流程,网站招商广告语?
建站与域名管理如何高效结合?
如何快速打造个性化非模板自助建站?
c# await 一个已经完成的Task会发生什么
如何在七牛云存储上搭建网站并设置自定义域名?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
建站之星如何实现PC+手机+微信网站五合一建站?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何在IIS中新建站点并配置端口与物理路径?
如何在阿里云ECS服务器部署织梦CMS网站?
长沙企业网站制作哪家好,长沙水业集团官方网站?
C#如何在一个XML文件中查找并替换文本内容
MySQL查询结果复制到新表的方法(更新、插入)
如何做静态网页,sublimetext3.0制作静态网页?
如何在香港服务器上快速搭建免备案网站?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何用y主机助手快速搭建网站?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
七夕网站制作视频,七夕大促活动怎么报名?
表情包在线制作网站免费,表情包怎么弄?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
怎么将XML数据可视化 D3.js加载XML
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
如何选择高效便捷的WAP商城建站系统?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
高端建站如何打造兼具美学与转化的品牌官网?
网站制作公司,橙子建站是合法的吗?
网站企业制作流程,用什么语言做企业网站比较好?
建站之星会员如何解锁更多建站功能?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
沈阳制作网站公司排名,沈阳装饰协会官方网站?
网站制作公司排行榜,四大门户网站排名?
常州企业建站如何选择最佳模板?
香港服务器WordPress建站指南:SEO优化与高效部署策略
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
建站VPS选购需注意哪些关键参数?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
活动邀请函制作网站有哪些,活动邀请函文案?
如何用狗爹虚拟主机快速搭建网站?
开心动漫网站制作软件下载,十分开心动画为何停播?
建站之星安装提示数据库无法连接如何解决?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
*请认真填写需求信息,我们会在24小时内与您取得联系。