在使用docker技术的时候,很多时候官方提供的基础镜像是无法满足实际要求的,因为我们可以通过dockerfile文件在基础镜像上自定义新的镜像满足实际要求,接下来我们就通过实验搭建一个容器,使用的镜像是我们通过dockerfile自定义的镜像
实验目的:通过基础镜像centos制作nginx镜像,搭建nginx服务的容器
1.首先通过dockerfile制作基于基础镜像的初始化镜像
1.1 准备目录结构,下载镜像并初始化系统
#按照业务类型或系统类型等方式划分创建目录环境,方便后期镜像比较多的时候进行分类
[root@Ubuntu1804 ~]#mkdir /data/dockerfile/{web/{nginx,apache,tomcat,jdk},system/{centos,ubuntu,alpine,debian}} -p
[root@Ubuntu1804 ~]#tree /data/dockerfile/
/data/dockerfile/
├── system
│ ├── alpine
│ ├── centos
│ ├── debian
│ └── ubuntu
└── web
├── apache
├── jdk
├── nginx
└── tomcat
10 directories, 0 files
#下载基础镜像
[root@Ubuntu1804 ~]#docker pull centos:centos7.7.1908
[root@Ubuntu1804 ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos7.7.1908 08d05d1d5859 12 months ago 204MB
1.2 制作基于基础镜像的系统base镜像
#先制作基于基础镜像的系统base镜像
[root@Ubuntu1804 ~]#cd /data/dockerfile/system/centos/
[root@Ubuntu1804 centos]#vim Dockerfile
FROM centos:centos7.7.1908
LABEL maintainer="lianlian <root@lianlianlianlian.com>"
RUN yum -y install wget && rm -f /etc/yum.repos.d/*
COPY base.repo /etc/yum.repos.d/
RUN yum -y install vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools wget curl bzip2 lsof zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel syste