热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Docker实战之入门】Dockerfile详细分析:构建docker镜像(1)基础镜像centos7

DockerfileDocker是软件工业上的集装箱技术。通过以下文件制作Docker镜像[root@Optimusdocker-training]#cdcentos7[root@

Dockerfile

Docker是软件工业上的集装箱技术。

通过以下文件制作Docker镜像

[root@Optimus docker-training]# cd centos7/
[root@Optimus centos7]# ls
aliyun-epel.repo aliyun-mirror.repo Dockerfile supervisord.conf

Dockerfile 自动构建docker镜像的配置文件,类似于Linux下shell命令。

[root@Optimus centos7]# vim Dockerfile
#
# MAINTAINER Carson,C.J.Zeong
# DOCKER-VERSION 1.6.2
#
# Dockerizing CentOS7: Dockerfile for building CentOS images
#
FROM centos:centos7.1.1503
MAINTAINER Carson,C.J.Zeong
ENV TZ "Asia/Shanghai"
ENV TERM xterm
ADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repo
ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo
RUN yum install -y curl wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man && \
yum install -y gcc gcc-c++ git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel && \
yum install -y --enablerepo=epel pwgen python-pip && \
yum clean all
RUN pip install supervisor
ADD supervisord.conf /etc/supervisord.conf
RUN mkdir -p /etc/supervisor.conf.d && \
mkdir -p /var/log/supervisor
EXPOSE 22
ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]

[FROM]指令指定基础镜像(副镜像)centos:centos7.1.1503.

[MAINTAINER]说明docker镜像的维护者。

[ENV](environment环境)这里设置了时区的环境变量TZ "Asia/Shanghai",环境变量可以多个。

[ADD] 在Dockerfile中有两条指令可以进行copy文件,一个是ADD,一个是COPY。都可以复制本地文件到container中。
ADD比COPY多两个功能:

1. 可以ADD一个在WebServer上的文件,在ADD后面aliyun-mirror.repo处直接写上链接地址,即可把文件copy到container(/etc/yum.repos.d/CentOS-Base.repo)里面。
2. 解压:有一个压缩包,不用进入到container中运行tar命令手动解压,用ADD命令可以自动解压。

[RUN] 指令后面可以写任何一条命令,RUN会将该命令放到Linux Shell下去执行。在这里,RUN指令用来安装一些基础的工具和软件。
在Dockerfile build docker镜像的时候,每执行一条指令,都会生成docker镜像的一层(分层layer技术),最后生成的镜像由很多个layer组合而成。

[RUN pip install supervisor] 在制作docker镜像的时候,会考虑到制作完成后能运行一个什么样的容器,如运行一个PHP服务或者Linux服务。那么,此时需要一个进程管理工具supervisor来管理进程。运行单个进程可以不用supervisor。

[ADD supervisord.conf /etc/supervisord.conf] 添加supervisor的配置文件到/etc目录下。

[RUN mkdir -p /etc/supervisor.conf.d]创建supervisor.conf.d目录,在这里存放启动其他服务的配置文件。/var/log/supervisor是存放supervisor的日志目录。

[EXPOSE 22] 比如container想暴露22端口给宿主机,宿主机会拿一个端口与container的22端口去映射,如2222端口号,那么可以使用服务器的IP地址,连接的时候端口号是2222,就可以连接到container(docker容器)里面。

[ENTRYPOINT] 在dockerfile中只有最后一条ENTRYPOINT会生效。container每次启动的时候,都会执行该命令。/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf开启supervisor服务,加载主要的配置文件。

构建docker镜像

使用dockerfile生成docker镜像

docker build

给要构建的docker镜像起一个名字

docker build -t

docker镜像完整的命名规则

docker build -t registry_url/namespace/csphere/centos:7.1

版本号

centos:版本号
若不写版本号,则会自动加上latest标签默认为 centos:latest

指定dockerfile

docker build -t csphere/centos:7.1 .
若dockerfile在当前目录下,则使用 .来指定;否则使用相对路径/path.

查看镜像

docker images
可以查看本地有哪些镜像,镜像的名字REPOSTORY、TAG、IMAGE ID、创建时间CREATED、镜像大小VIRTUA.

生成docker容器

生成docker容器

docker run
通过以上创建好的docker镜像,执行run指令可生成docker容器。(此时退出/centos7目录,回到根目录下)

查看run参数

docker help run
查看run有哪些参数

交互式模

docker run -it
启动docker容器container时 是交互式模式,把container启动到前台。

后端启动

docker run -d
把container在后端启动,启动后,返回一个container的ID号。

端口映射-P

docker run -d -P 2222:222
在dockerfile中有一个指令EXPOSE 22,暴露出22号端口。在前端,宿主机会分配一个没有使用的端口号,如2222,来进行端口映射。那么,可以用2222端口连接container。如果有服务器需要维护重启时,container也会重启,此时2222端口会发生变化,仍然会随机拿一个没有使用的端口号来和22号端口做端口映射。

端口映射-p

docker run -d -p 2222:22
不管是宿主机重启还是container重启,2222端口一直给这个container。除非该container删掉后,2222端口号会被分配给其他container使用。

容器名

docker run -d -p 2222:22 --name base
在通过docker镜像生成docker容器时,--name用于给容器起名字,这里起名为base,方便以后查找。

指定docker镜像

docker run -d -p 2222:22 --name base csphere/centos:7.1
指明docker镜像,这里使用csphere/centos:7.1 docker镜像生成叫做`base`的docker容器。返回container的长ID号,如2d36dbfc72a045725b845771bdeb8ff0acc0845eb7d39d09e5f8025237b0d9c9。

查看container

docker ps -a
不加参数时,默认只会显示处于running下的container。-a可查看退出状态下/非up状况下的container等当前本地所有的container。

推荐阅读
  • Docker学习(五) Dockerfile基础命令
    学习Dockerfile,需要对它的基础命令进行了解FROM-基于基准镜像尽量使用官方提供的基准镜像[x]FROMtomcat:8.5.50-jdk8-openjdk#制作基准镜像 ... [详细]
  • 在Docker中,构建一个自定义镜像共有两种方法,一是通过commit指令构建,二是通过Dockerfile文件构建。第一种方式在上篇博客中已经详细介绍(Docker入门实战(二)—— ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • centos 编译安装 php 5.5,CentOS 5.5上编译安装 PHP 5.3.6
    编译并安装#make&&makeinstall安装结果摘要,里面有几个主要的安装路径变量libtool:install:warning:remembertorunli ... [详细]
  • 其实就是将web服务器的部署操作用docker形式来替代,那么也就是用dockerfile来实现部署操作。下面是dockerfileFROMubuntuMAINTAINERshuaibing.huo@ ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • Ubuntu 用户安装 Linux Kernel 3.15 RC1
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 三、查看Linux版本查看系统版本信息的命令:lsb_release-a[root@localhost~]#lsb_release-aLSBVersion::co ... [详细]
  • 四行代码换国内源快速安装配置Rust
    四行代码快速安装Rust很多朋友苦恼官方给出的终端安装命令,太慢,有时候直接连接不上。接下来介绍四行代码快速换源安装配置RUST。#先配置国内源打开终端 ... [详细]
  • Centos7安装MySql5.6
    如何在CentO ... [详细]
  • dockerfile方式创建容器最简单的dockerfile创建镜像使用此镜像运行一个容器dockerfile基本要素dockerfile指令FROM:  FROM{base镜像} ... [详细]
author-avatar
毛云龙hei
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有