首页 > 其他 > 详细

docker制作镜像

时间:2020-09-23 09:18:31      阅读:47      评论:0      收藏:0      [点我收藏+]

一、dockerfile制作镜像步骤

Dockerfile结构大致分为四个部分:

  1. 基础镜像信息
  2. 维护者信息
  3. 镜像操作指令
  4. 容器启动时执行指令

Dockerfile每行支持一条指令,每条指令可带多个参数,支持使用以#号开头的注释

指令对象含义
FROM 镜像 指定新镜像所基于的镜像,必须为第一条指令
MAINTAINER 名字 新镜像的维护人信息
RUN 命令 在所基于的镜像上执行命令,并提交到新镜像中
EXPOSE 端口号 指定新镜像加载到Docker时开启的端口号
ENV 环境变量 变量值 设置一个环境变量的值,会被后面的RUN使用
ADD 源文件/目录 目标文件/目录 将源文件复制到目标文件,源文件要与Docker位于同一目录下,或者为一个URL
COPY 源文件/目录 目标文件/目录 将本地主机上的源文件/目录复制到目标地点,源文件/目录要与Dockerfile在同一目录下
VOLUME ["目录"] 在容器中创建一个挂载点
USER 用户名 /UID 指定运行容器时的用户
WORKDIR 路径 为后续的RUN、CMD、ENTRYPOINT指定工作目录
ONBUILD 命令 指定所生成的镜像作为一个基础镜像时所要运行的命令
CMD ["要运行的程序","参数1","参数2"] 指定启动容器时运行的命令或脚本,只能有一条CMD命令,多条时只有最后一条被执行

1)第一个实例:

1、编写dockerfile

mkdir -p /opt/dockerfile/centos6_ssh && cd  /opt/dockerfile/centos6_ssh

cat >> dockerfile << ‘EOF‘

FROM centos:6.9
RUN yum -y install openssh-server
RUN /etc/init.d/sshd start
RUN echo 123456 | passwd --stdin root
CMD ["/usr/sbin/sshd","-D"]

EOF

技术分享图片

 

 

2、docker build构建镜像

docker build -t centos6-ssh:v2 .  在当前路径下生成一个镜像

技术分享图片

 

 

技术分享图片

 

 

 

3、启动容器来测试新构建的镜像

docker run -d -p 1322:22 centos6-ssh:v2

 docker ps -a -l --no-trunc 显示全ID

技术分享图片

 

 

登录创建好的容器:因为映射用的宿主机是1322端口

ssh root@192.168.0.149 -p 1322

技术分享图片

 

 

查询容器:docker ps -a 

技术分享图片

 

 

停掉容器:docker stop 3b83cf3faa0e

技术分享图片

 

 

 删除容器:docker rm -f 3b83cf3faa0e

技术分享图片

 

 

2)第二个实例:

手动制作支持ssh-http双服务的docker镜像

1、编写dockerfile

mkdir -p /opt/dockerfile/centos6_ssh_http && cd  /opt/dockerfile/centos6_ssh_http

cat >> dockerfile << ‘EOF‘

FROM centos:6.9
RUN yum -y install openssh-server

RUN /etc/init.d/sshd start
RUN echo 123456 | passwd --stdin root

RUN yum -y install httpd  安装Apache

ADD init.sh /init.sh   把当前路径下的init.sh放到容器的跟目录下
CMD ["/bin/bash","/init.sh"]

EOF

[root@bms-6e4a-0918 centos6_ssh_http]# cat dockerfile
FROM centos:6.9
RUN yum -y install openssh-server
RUN /etc/init.d/sshd start
RUN echo 123456 | passwd --stdin root
RUN yum -y install httpd
ADD init.sh /init.sh
CMD ["/bin/bash","/init.sh"]

[root@bms-6e4a-0918 centos6_ssh_http]# cat >>init.sh << ‘EOF‘
> /etc/init.d/httpd start
> /usr/sbin/sshd -D
> EOF

技术分享图片

 

2、docker build构建镜像

docker build -t centos6-ssh_http:v2 .  在当前路径下生成一个镜像

技术分享图片

 

技术分享图片

 

技术分享图片

 

3、启动容器来测试新构建的镜像

docker run -d -p 1321:22 -p 85:80 centos6-ssh_http:v2,因为docker镜像要开启80和22端口,宿主机做映射的端口是85、1321

 docker ps -a -l --no-trunc 显示全ID

测试Apache是否OK:curl -I 192.168.0.149:85

技术分享图片

 

登录容器:

ssh root@192.168.0.149 -p 1322

技术分享图片

 

 停容器、删容器:

技术分享图片

 

 3)扩展

[root@bms-6e4a-0918 centos6_ssh_http]# cat dockerfile 
FROM centos:6.9
RUN yum -y install openssh-server
RUN /etc/init.d/sshd start
RUN echo 123456 | passwd --stdin root
RUN yum -y install httpd
ADD init.sh /init.sh

EXPOSE 22 80 docker镜像开启容器的时候自动开启22、80端口
CMD ["/bin/bash","/init.sh"]

[root@bms-6e4a-0918 centos6_ssh_http]# cat >>init.sh << ‘EOF‘
> /etc/init.d/httpd start
> /usr/sbin/sshd -D
> EOF

[root@bms-6e4a-0918 centos6_ssh_http]# docker run -d -P centos6-ssh_http:v3 宿主机会自动分配端口和容器的22、85做映射,通过docker ps -a -l查看

 

docker制作镜像

原文:https://www.cnblogs.com/csren12/p/13715753.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!