在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何构建一个Docker镜像

199次阅读
没有评论

共计 4663 个字符,预计需要花费 12 分钟才能阅读完成。

这篇文章主要介绍“如何构建一个 Docker 镜像”,在日常操作中,相信很多人在如何构建一个 Docker 镜像问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何构建一个 Docker 镜像”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

8. 高级

本节我介绍如何自己构建一个 Docker 镜像,我们将构建一个支持 scala 的运行环境,并且对外开放 SSH 服务。

8.1. 构建镜像的两种方法

构建镜像有两种方法:

运行并进行一个基础容器(如 centos, docker run -it centos /bin/bash),然后安装需要的环境,再用 commit  将容器保存成新的镜像

使用 Dockerfile 构建,这也是推荐的做法

本节我们仅介绍第 2 种方法。

8.2. Dockerfile 介绍

Dokcerfile 是用于构建 Docker 镜像的元文件,它的说明及语法见: http://docs.docker.com/engine/reference/builder/

8.3. 构建规划

根据需求可以发现我们安装的主要环境有三个:SSH 服务、Java 环境(Scala 依赖它)、Scala 环境,与软件开发一样,我们也可以分模块构建,即构建三个镜像:

只包含 SSH 服务的基础镜像

带 SSH 及 Java 环境的镜像

带 SSH、Java 及 Scala 环境的镜像

8.4. SSH 镜像

FROM centos:centos7  1 
MAINTAINER gudaoxuri  2 
#---------------Use 163 mirrors---------------  3 
RUN yum install -y wget  \
 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup   \
 wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS7-Base-163.repo   \
 yum clean all   \
 yum makecache  4 
#---------------Install Common Tools---------------
RUN yum install -y sed curl tar gcc gcc-c++ make git passwd sudo
#---------------Modify Time Zone---------------
ENV TZ  Asia/Shanghai   5 
ENV TERM xterm
RUN yum install -y ntpdate   \
 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#---------------Support Chinese---------------
#RUN yum groupinstall -y  Fonts    \
# echo  LANG=\ zh_CN.UTF-8\    /etc/sysconfig/i18n
#---------------Install SSH---------------
RUN yum install -y openssh-server openssh-clients   \
 sed -i  s/UsePAM yes/UsePAM no/g  /etc/ssh/sshd_config   \
 echo  root:123456  | chpasswd   \
 ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key   \
 ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key   \
 mkdir /var/run/sshd
#---------------Setting Common Path---------------
RUN chmod 777 -R /opt/   \
 mkdir /opt/env/   \
 mkdir /opt/workspaces/
EXPOSE 22  6 
CMD [/usr/sbin/sshd ,  -D]  7

1 FROM  表示此镜像是基于哪个镜像构建的 2 MAINTAINER  开发者的信息 3 # 注释 4 RUN  常用命令,用于执行 Linux 的命令,多用于安装组件 5 ENV  常用命令,用于设置环境变量 6 EXPOSE  表明默认对外暴露的端口(docker run -P) 7 CMD  要执行的服务,多条 CMD 只执行最后一条
RUN  参数的学问,Docker 镜像是分层的,一个镜像可能由多个层组成,一次 RUN 实际上就产生了一层,在编译 Dockerfile 的过程中可能出错,重新编译时我们会发现之前已成功编译的层不会再次被编译 8.5. 编译 SSH 镜像

root@ubuntu:/opt/test/dockerfile/ssh# ls
Dockerfile
root@ubuntu:/opt/test/dockerfile/ssh# docker build -t gudaoxuri/ssh .
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon 
Step 0 : FROM centos:centos7
Pulling repository centos
ce20c473cd8a: Download complete 
ce20c473cd8a: Pulling image (centos7) from centos 
168a69b62202: Download complete 
812e9d9d677f: Download complete 
4234bfdd88f8: Download complete 
Status: Downloaded newer image for centos:centos7
 ---  ce20c473cd8a
Step 1 : MAINTAINER gudaoxuri
 ---  Running in 889ea744c458
 ---  5b1151e6cb0b
Removing intermediate container 889ea744c458
Step 10 : CMD /usr/sbin/sshd -D
 ---  Running in ce563073b686
 ---  b61a4adad85f
Removing intermediate container ce563073b686
Successfully built b61a4adad85f
root@ubuntu:/opt/test/dockerfile/ssh# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
gudaoxuri/ssh latest b61a4adad85f 10 minutes ago 966 MB
...

8.6. Java 镜像

FROM gudaoxuri/ssh:latest  1 
MAINTAINER gudaoxuri
#---------------Install Java---------------
RUN wget -P /opt/env/ --no-check-certificate --no-cookies --header  Cookie: oraclelicense=accept-securebackup-cookie  http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jdk-8u60-linux-x64.tar.gz   \
 tar -xzf /opt/env/jdk-8u60-linux-x64.tar.gz -C /opt/env/   \
 rm /opt/env/jdk-8u60-linux-x64.tar.gz   \
 mv /opt/env/jdk1.8.0_60 /opt/env/java   \
 echo  export JAVA_HOME=/opt/env/java    /etc/profile
ENV JAVA_HOME /opt/env/java
RUN echo  PATH=$PATH:$JAVA_HOME/bin    /etc/profile
ENV PATH $PATH:$JAVA_HOME/bin

1 gudaoxuri/ssh:latest  就是我们之前编译的镜像 8.7. Scala 镜像

FROM gudaoxuri/java:latest
MAINTAINER gudaoxuri
#---------------Install Scala---------------
RUN wget -P /opt/env/ http://downloads.typesafe.com/scala/2.10.6/scala-2.10.6.tgz   \
 tar -xzf /opt/env/scala-2.10.6.tgz -C /opt/env/   \
 rm /opt/env/scala-2.10.6.tgz   \
 mv /opt/env/scala-2.10.6 /opt/env/scala   \
 echo  export SCALA_HOME=/opt/env/scala    /etc/profile
ENV SCALA_HOME /opt/env/scala
RUN sed /^PATH=/d /etc/profile   /etc/profile   \
 echo  PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin    /etc/profile
ENV PATH $PATH:$JAVA_HOME/bin:$SCALA_HOME/bin

8.8. 编译 Java/Scala 镜像

过程同上,略

8.9. 发布镜像

有了新的镜像后我们希望把这个镜像发布到 hub.docker.com 上去分享,有两种方式:

使用  docker push  发布前要先登录  docker login

使用 github 发布

介于国内网络环境恶劣,第 1 种方式失败概率很高,因为它上传的是生成的镜像(几百 MB 到几 G 不等),所以推荐使用第 2 种方式
请先注册 hub.docker.com  及  github.com  的账号 8.9.1. 使用 github 发布镜像
不要用 IE 操作,笔者使用 IE11 在 hub.docker.com 上操作时发生过不小的困扰。

在 hub.docker.com  上建立 github 连接

在 github 中设置权限

在 github 中建一个开源项目,注意要包含 Dockerfile 文件

在 github 中设置这个项目的权限

在 hub.docker.com  上建立自动构建项目

在 hub.docker.com  上选择 github 上的项目

在 hub.docker.com  上设置项目属性

不多时就构建好了

到此,关于“如何构建一个 Docker 镜像”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计4663字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 中文在线视频 | 日本欧美韩国 | 久久日韩| 一本本月无码- | 小小的日本乱码在线观看免费 | 日韩激情无码免费毛片 | 国内精品久久久久鸭 | 欧美乱大交xxxxx潮喷 | 亚洲一区中文字幕 | 天天摸夜夜添狠狠添高潮出水 | 网址你懂的在线 | 国产精品久久有声小说 | 久久久精品国产免费观看同学 | 成人无码区免费a片久久鸭软件 | 国产成人18黄网站 | 精品国产粉嫩内射白浆内射双马尾 | 亚洲高清免费视频 | 成人亚洲视频在线观看 | 特级淫片aaaaa片毛片 | 亚洲一区成人 | 中文字幕在线视频不卡 | 宅女深夜福利视频在线 | 久久亚洲一区二区三区四区 | 亚洲丶国产丶欧美一区二区三区 | 国产亚洲精品自在久久不卡 | 在线啪啪 | 1024你懂的国产欧美日韩在 | 亚洲老妈激情一区二区三区 | 和岳每晚弄的高潮嗷嗷叫视频 | 欧美精品亚洲精品日韩1818 | 中文字幕 亚洲精品 第1页 | 久久99免费 | 无码中文字幕日韩专区 | 一区二区精品 | 特级欧美视频aaaaaa | 男女爱爱好爽视频免费看 | 久久精品熟女亚洲av麻豆 | 国语对白嫖老妇胖老太 | 色窝窝免费一区二区三区 | 国产91一区二这在线播放 | 天天做天天爱夜夜爽导航 |