一、手动docker镜像的缺点

相对于手动制作的docker镜像,使用dockerfile构建的镜像有以下优点:

1、dockerfile只有几kb,便于传输

2、使用dockerfile构建出来的镜像,在运行容器的时候,不用指定容器的初始命令

3、支持更多的自定义操作

二、dockerfile常用指令

1、dockerfile常用指令:

FROM 这个镜像的妈妈是谁?(指定基础镜像)
MAINTAINER 告诉别人,谁负责养它?(指定维护者信息,可以没有)
RUN 你想让它干啥(在命令前面加上RUN即可)
ADD 给它点创业资金(COPY文件,会自动解压)
WORKDIR 我是cd,今天刚化了妆(设置当前工作目录)
VOLUME 给它一个存放行李的地方(设置卷,挂载主机目录)
EXPOSE 它要打开的门是啥(指定对外的端口)(-P 随机端口)
CMD 奔跑吧,兄弟!(指定容器启动后的要干的事情)(容易被替换)

2、dockerfile其他指令:

COPY 复制文件
ENV 环境变量
ENTRYPOINT 容器启动后执行的命令(无法被替换,启容器的时候指定的命令,会被当成参数

三、dockerfile实战1

1、手动制作docker镜像步骤:

1:启动容器安装软件服务

docker run -it -p 1022:22 --name luoahong centos:6.9
######
yum install openssh-server -y
/etc/init.d/sshd start
echo 123456|passwd --stdin root
######

2:将安装好服务的容器commit提交为镜像

docker commit luoahong centos6-ssh:v1

3: 启动新容器来测试新提交的镜像

docker run -d -p 2022:22 centos6-ssh:v1 /usr/sbin/sshd -D

2、dockerfile制作docker镜像步骤:

1:编写dockerfile

[root@luoahong centos6_ssh]# pwd
/opt/dockerfile/centos6_ssh
[root@luoahong centos6_ssh]# ll
total 4
-rw-r--r-- 1 root root 159 Jan 15 18:42 dockerfile
[root@luoahong centos6_ssh]# cat dockerfile
FROM centos:6.9
RUN yum install openssh-server -y
RUN /etc/init.d/sshd start
RUN echo 123456|passwd --stdin root
CMD ["/usr/sbin/sshd","-D"]

2:docker build构建镜像

[root@luoahong centos6_ssh]# docker build -t centos6-ssh:v2 .

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

[root@luoahong centos6_ssh]# docker run -d -p 1322:22 centos6-ssh:v2
dc6ed1878218e7f13ac753cd5eec290eca1b1c06a1c4da6125b37e4d4f849c97
[root@luoahong centos6_ssh]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc6ed1878218 centos6-ssh:v2 "/usr/sbin/sshd -D" 5 seconds ago Up 4 seconds 0.0.0.0:1322->22/tcp cranky_colden
ea82b9583081 centos6-ssh-httpd:v1 "/bin/bash /init.sh" About an hour ago Up About an hour 0.0.0.0:1122->22/tcp, 0.0.0.0:8080->80/tcp stupefied_rosalind
0d09d3a1591a centos:6.9 "/bin/bash" About an hour ago Exited (0) About an hour ago luoahong
156d80283acf centos6-ssh:v1 "/usr/sbin/sshd -D" About an hour ago Up About an hour 0.0.0.0:2022->22/tcp romantic_chandrasekhar
0485b9ecd1ad centos:6.9 "/bin/bash" 2 hours ago Exited (0) About an hour ago luoahong4

4、测试

[root@luoahong ~]# ssh root@192.168.228.134 -p 1322
The authenticity of host '[192.168.228.134]:1322 ([192.168.228.134]:1322)' can't be established.
RSA key fingerprint is SHA256:F6zybEUDFDsU7O33NYhVZrwhSkANZvKhSEXDwc6+lVY.
RSA key fingerprint is MD5:04:47:c1:09:1c:0f:46:48:1c:7c:7c:d7:22:71:54:7a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.228.134]:1322' (RSA) to the list of known hosts.
root@192.168.228.134's password:
[root@dc6ed1878218 ~]#

四、dockerfile实战2

1、手动制作docker镜像步骤:

1:启动容器安装软件服务

docker run -it -p 1022:22 --name luoahong centos:6.9
######
yum install openssh-server -y
/etc/init.d/sshd start
echo 123456|passwd --stdin root
######

2:将安装好服务的容器commit提交为镜像

docker commit luoahong centos6-ssh:v1

3: 启动新容器来测试新提交的镜像

docker run -d -p 2022:22 centos6-ssh:v1 /usr/sbin/sshd -D

2、dockerfile制作docker镜像步骤:

1:编写dockerfile

[root@luoahong centos6_ssh_http]# pwd
/opt/dockerfile/centos6_ssh_http
[root@luoahong centos6_ssh_http]# ll
total 8
-rw-r--r-- 1 root root 193 Jan 15 18:57 dockerfile
-rw-r--r-- 1 root root 54 Jan 15 19:02 init.sh
[root@luoahong centos6_ssh_http]# cat dockerfile
FROM centos:6.9
RUN yum install openssh-server httpd -y
RUN /etc/init.d/sshd start
RUN echo 123456|passwd --stdin root
ADD init.sh /init.sh
CMD [/bin/bash","/init.sh"]

编写容器启动脚本

[root@luoahong centos6_ssh_http]# cat init.sh
#!/bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D

2:docker build构建镜像

[root@luoahong centos6_ssh_http]# docker build -t centos6-ssh-httpd:v2

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

[root@luoahong centos6_ssh_http]# docker run -d -p 8080:80 -p 2122:22 centos6-ssh-httpd:v2
a5ff3069084c82a9b7b5030d4ee21e172fdedb2160b71ccbfb3e63b6cb979552
docker: Error response from daemon: driver failed programming external connectivity on endpoint xenodochial_swartz (78dc457d720cb6611f611b12690499acbe168aae92eb7913b23950e4d71ba860): Bind for 0.0.0.0:8080 failed: port is already allocated.
[root@luoahong centos6_ssh_http]# docker ps -a -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a5ff3069084c centos6-ssh-httpd:v2 "/bin/sh -c [/bin/ba鈥? 4 seconds ago Created xenodochial_swartz

4、测试

  

Docker:dockerfile自动构建镜像 [六]的更多相关文章

  1. Docker的自动构建镜像

    Dockerfile自动构建docker镜像类似ansible剧本,大小几kb手动做镜像:大小几百M+ dockerfile 支持自定义容器的初始命令 dockerfile主要组成部分: 基础镜像信息 ...

  2. docker微服务部署之:五、利用DockerMaven插件自动构建镜像

    docker微服务部署之:四.安装docker.docker中安装mysql和jdk1.8.手动构建镜像.部署项目 在上一篇文章中,我们是手动构建镜像,即: 4.1.2.5.1.2.6.1.2中的将d ...

  3. 使用Dockerfile来构建镜像

    Dockerfile原理 创建Dockerfile Dockerfile实例 Dockerfile指令 注释 FROM MAINTAINER RUN ADD WORKDIR ENV USER COPY ...

  4. 使用Docker+Jenkins自动构建部署

    环境 Windows 10 Docker Version 18.06.1-ce-win73 (19507) 运行jenkins 运行jenkins 容器 docker run -d --name ln ...

  5. [Linux] 编写Dockerfile文件自动构建镜像

    Dockerfile是一个文本文件,按顺序包含构建给定镜像所需的所有命令Docker通过读取Dockerfile中的指令自动构建图像 . Dockerfile遵循特定的格式和指令集,您可以在Docke ...

  6. Docker系列(三)Dockerfile 离线构建镜像

    一.Dockfile介绍: Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfil ...

  7. 记录 Docker 的学习过程 (dockerfile自动制作镜像)

    自动制作镜像 通过编写dockerfile来自动创建镜像 #vi Dockerfile #编辑dockerfile文件,一定要以这个名字命名 #cat Dockerfile #导入哪个基础镜像FROM ...

  8. 【转】使用Docker+Jenkins自动构建部署

    转载自 https://segmentfault.com/a/1190000012921606 环境 阿里云ESC,宿主机服务器安装Docker,在安全规则中确认8080端口开启. 客户端mac 运行 ...

  9. docker Dockerfile学习---构建apache环境

    1.创建目录,上传包 创建项目目录 $ mkdir apache_php $ cd apache_php 把包下载后放到服务器该目录下 $ ls apr-....tar.gz 2.创建Dockerfi ...

随机推荐

  1. Serverless架构

    什么是Serverless架构 Servlerless 架构是新兴的架构体系,在Serverless 架构中,开发者无需考虑服务器的问题,计算资源作为服务而不是服务器的概念出现,这样,开发者只需要关注 ...

  2. mysql删除表中重复数据,只保留一个最小的id的记录

    语句: delete from table1 where id not in (select minid from (select min(id) as minid from table1 group ...

  3. go语言学习-常用命令(四)

    go常用命令 go get:获取远程包(得装git) go run:直接运行程序(写代码时调试用) go build:测试编译,检查是否有编译错误 go fmt:格式化代码(一般不咋用,IDE都自带了 ...

  4. 关于opencv模板匹配功能的项目测试记录

    模板匹配功能介绍的很好的一篇博客:https://www.cnblogs.com/XJT2018/p/9934139.html 就如上述博客所言:“若原图像中的匹配目标发生旋转或大小变化,该算法无效. ...

  5. 如何在Spring Data JPA中引入Querydsl

    一.环境说明 基础框架采用Spring Boot.Spring Data JPA.Hibernate.在动态查询中,有一种方式是采用Querydsl的方式. 二.具体配置 1.在pom.xml中,引入 ...

  6. android glide图片加载框架

    项目地址: https://github.com/bumptech/glide Glide作为安卓开发常用的图片加载库,有许多实用而且强大的功能,那么,今天就来总结一番,这次把比较常见的都写出来,但并 ...

  7. Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page

    Razor Page介绍 前言 上周期待已久的Asp.Net Core 2.0提前发布了,一下子Net圈热闹了起来,2.0带来了很多新的特性和新的功能,其中Razor Page引起我的关注,作为web ...

  8. Git和Gitlab在使用过程中所遇到的问题

    01-关于gitLab添加ssh key后,git clone还提示输入密码问题 本地用户连接远程仓库需要用 HTTP方式连接,SSH方式会出现提示输入密码 git clone http://.... ...

  9. Math的一些方法

    Math.abs(数值) 把()内的值变为正数 Math.ceil(4.3) 向上取整 // 5 Math.floor(4.3) 向下取整 // 4 Math.round(4.3) 四舍五入取整 // ...

  10. 使用.net core搭建文件服务器

    标题之所以带上.net core,而不是.net就是由于两者在类库的使用以及部署环境有很大的差别,所以特此说明. 长话短说,直接开始! 1.新建一个.net core项目,版本是2.0,为了方便就建一 ...