从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

Dockerfile构建镜像

发布:蔺要红11-11分类: Docker

# 手动构建自己的镜像 
# 镜像提交到本地  27207aa3c367(容器ID)
docker commit -m "nginx v1 " 27207aa3c367 linyaohong/mynginx:v1
[root@test01 ~]# docker images # 可以看到手动构建了一个自己的镜像
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
linyaohong/mynginx   v1                  dff38d816f59        39 seconds ago      408MB

# Dockerfile构建镜像

FROM        # 指定基础镜像  ,如果本地没有会在远程pull下来
MAINTAINER  # 指定维护者信息
RUN         # 在命令前面加上RUN即可
ADD         # 会自动解压
WORKDIR     # 设置当前工作目录
VOLUME      # 设置卷,挂载主机目录
EXPOSE      # 指定对外的端口
CMD         # 定容器启动后的要干的事情,只能有一条,否则只有一个被执行
            # 启动容器的时候,如果加了命令会覆盖这里的CMD命令

[root@test01 /data/nginx]# vim Dockerfile 
# This  Nginx Dockerfile
# Base image
FROM centos
# Maintainer
MAINTAINER YaoHong.Lin
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y nginx && yum clean all
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
ADD index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx"]

docker build -t mynginx:v2 .  # 通过Dockerfile 构建镜像 . 代表当前目录 会自动找Dockerfile文件

# 启动一个容器
[root@test01 /data/nginx]# docker run --rm  --name mynginxv2  -d -p 82:80 mynginx:v2 nginx(nginx可以不写,Dockerfile已经定义了,如果加了命令会覆盖CMD)
064e32871f80e67203f4144b9cb9f2ed2d485184a3daecd338a8c90f8bd47454

# 生产案例
# This docker file uses the centos image
# VERSION 1
# Author: Jason Zhao
 
# Base image
FROM centos
 
# Maintainer
MAINTAINER shundong.zhao zhaoshundong@gmail.com
 
#Commands to update the image
ADD pcre-8.37.tar.gz /usr/local/src/
ADD nginx-1.9.3.tar.gz /usr/local/src/
 
RUN yum install -y wget gcc gcc-c++ openssl-devel make
RUN useradd -s /sbin/nologin -M www
WORKDIR /usr/local/src/nginx-1.9.3
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www \
     --with-http_ssl_module --with-http_stub_status_module --with-file-aio \
     --with-http_dav_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ENV PATH /usr/local/nginx/sbin:$PATH
 
EXPOSE 80
CMD ["nginx"]

# 生产的镜像分层设计

系统层
运行环境层
应用服务层

[root@test01 /data]# tree
.
├── app
│   ├── admin
│   ├── pay
│   └── shop
├── nginx
│   ├── Dockerfile
│   └── index.html
├── runtime
│   ├── java
│   ├── php
│   └── python
└── system
    ├── centos
    └── ubuntu

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站