栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Dockerfile

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dockerfile

目录
  • 基本结构
  • 指令
  • Dockerfile编译安装apache

基本结构

Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义镜像。

Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。

Docker分为四部分:

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时默认要执行的指令
# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: bravealove1
# Command format: Instruction [arguments / command] ...

# 第一行必须指定基于的基础镜像
FROM centos

# 维护者信息
LABEL MAINTAINER='weixiaoya 1870648704@qq.com'

# 镜像操作指令
FROM centos
RUN 
ADD nginx-1.18.0.tar.gz /usr/src
WORKDIR /usr/src/
RUN yum -y install gcc gcc-c++ zlib-devel openssl-devel pcre-devel make && 
cd nginx-1.18.0 && ./configure && make && make install 

# 容器启动时默认要执行的指令
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]


其中,一开始必须指明所基于的镜像名称,接下来一般会说明维护者信息。
后面则是镜像操作指令,例如RUN指令,RUN指令将对镜像执行跟随的命令。每运行一条RUN指令,镜像添加新的一层,并提交。
最后是CMD指令来指定运行容器时的操作指令。

指令

指令的一般格式为INSTRUCTION arguments,指令包括:

  • FROM
  • LABEL MAINTAINER
  • RUN
  • CMD
  • EXPOSE
  • ENV
  • ADD
  • COPY
  • ENTRYPOINT
  • VOLUME
  • USER
  • WORKDIR
  • ONBUILD
Dockerfile编译安装apache
//创建目录
[root@localhost ~]# mkdir httpd
[root@localhost ~]# cd httpd
[root@localhost httpd]# ls
[root@localhost httpd]# mkdir files

//把apache包放到files目录里面
[root@localhost ~]# ls
anaconda-ks.cfg   apr-util-1.6.1.tar.gz  httpd-2.4.48.tar.gz
apr-1.7.0.tar.gz  httpd                  tank
[root@localhost ~]# mv apr-1.7.0.tar.gz httpd/files/
[root@localhost ~]# mv apr-util-1.6.1.tar.gz httpd/files/
[root@localhost ~]# mv httpd-2.4.48.tar.gz httpd/files/
[root@localhost ~]# cd httpd/
[root@localhost httpd]# touch Dockerfile
[root@localhost httpd]# ls
Dockerfile  files
[root@localhost httpd]# cd
[root@localhost ~]# tree httpd/
httpd/
├── Dockerfile
└── files
    ├── apr-1.7.0.tar.gz
    ├── apr-util-1.6.1.tar.gz
    └── httpd-2.4.48.tar.gz

1 directory, 4 files

//编写Dockerfile文件
[root@localhost httpd]# vim Dockerfile 
[root@localhost httpd]# cat Dockerfile 
FROM centos

LABEL MAINTAINER="weixiaoya 1870648704@qq.com"

ADD files/* /usr/src/

WORKDIR /usr/src/

RUN yum -y install openssl-devel pcre-devel pcre  expat-devel libtool gcc gcc-c++ make  &&  
    cd apr-1.7.0 && 
    sed -i '/$RM "$cfgfile"/d' configure &&  
    ./configure --prefix=/usr/local/apr  &&  make && make install  && 
   cd ../apr-util-1.6.1 && 
   ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr  && 
   make && make install && 
   cd ../httpd-2.4.48 && 
   ./configure --prefix=/usr/local/apache 
    --enable-so 
    --enable-ssl 
    --enable-cgi 
    --enable-rewrite 
    --with-zlib 
    --with-pcre 
    --with-apr=/usr/local/apr 
    --with-apr-util=/usr/local/apr-util/ 
    --enable-modules=most 
    --enable-mpms-shared=all 
    --with-mpm=prefork   && 
    make && make install  && 
    sed -i '/#ServerName/s/#//g' /usr/local/apache/conf/httpd.conf 
    
CMD  ["/usr/local/apache/bin/apachectl","-D","FOREGROUND"]

//构建httpd镜像
[root@localhost ~]# docker build -t weixiaoya/httpd:v0.2 httpd/
Sending build context to Docker daemon  11.07MB
Step 1/6 : FROM centos
 ---> 5d0da3dc9764
Step 2/6 : LABEL MAINTAINER="weixiaoya 1870648704@qq.com"
 ---> Running in 1887a0eb58d2
Removing intermediate container 1887a0eb58d2
 ---> f2fe44b3f3d8
Step 3/6 : ADD files/* /usr/src/
 ---> 35489be1d1f4
Step 4/6 : WORKDIR /usr/src/
 ---> Running in 7a74b074da63
Removing intermediate container 7a74b074da63
 ---> b5629b320353
···············································


[root@localhost ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED          SIZE
weixiaoya/httpd    v0.2      230991a0d197   11 seconds ago   701MB
weixiaoya/httpd    v0.1      24270cd5ab1a   26 hours ago     712MB
3199560936/httpd   v0.1      291538f2b5b1   37 hours ago     712MB
                 809d37e9b570   37 hours ago     712MB
nginx              latest    f652ca386ed1   5 days ago       141MB
busybox            latest    d23834f29b38   8 days ago       1.24MB
centos             latest    5d0da3dc9764   2 months ago     231MB
[root@localhost ~]# docker run -itd --name httpd -p 80:80 230991a0d197
1b574e6aebd7bcde2abb1ae24661390dc76da90ff5023d25fa78142f1220a504

[root@localhost ~]# docker ps -a
ConTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                               NAMES
1b574e6aebd7   230991a0d197   "/usr/local/apache/b…"   3 seconds ago   Up 2 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   httpd
[root@localhost ~]# 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/642228.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号