知识点:
1)手动构建镜像
2)Dockerfile快速构建镜像
阿里云yum源
https://opsx.alibaba.com/mirror镜像制作
nginx镜像实例
创建并运行centos容器
[root@izm5edykqg8tzid352ga0iz mysql]# docker pull centos //以centos为基础[root@izm5edykqg8tzid352ga0iz mysql]# docker run -it centos /bin/bash[root@696cd0ad637b /]# //已经进入容器
更新容器yum源并安装nginx
[root@8ab2b9d7afab yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo[root@8ab2b9d7afab yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo[root@8ab2b9d7afab yum.repos.d]# yum -y install nginx
退出该容器,然后基于该容器做一个镜像
[root@izm5edykqg8tzid352ga0iz mysql]# docker commit -m "my nginx" e1edeef7375f(容器名or容器ID) danny/nginx:v1(镜像名:版本号)sha256:a5d464ef190c80411161ec6193b877eb5592a1961aeb318e341a9f9c46a39d05[root@izm5edykqg8tzid352ga0iz mysql]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdanny/nginx v1 a5d464ef190c 2 minutes ago 427 MB //基于mynginx容器制作的镜像docker.io/nginx latest 71c43202b8ac 4 days ago 109 MBdocker.io/centos latest 5182e96772bf 3 weeks ago 200 MBdocker.io/alpine latest 11cd0b38bc3c 8 weeks ago 4.41 MB[root@izm5edykqg8tzid352ga0iz mysql]# docker run -dit --name nginxv1 danny/nginx:v1[root@92c8d3a4bc2a /]# [root@92c8d3a4bc2a /]# ps -ef //已经进入容器UID PID PPID C STIME TTY TIME CMDroot 1 0 0 08:21 ? 00:00:00 /bin/bashroot 16 1 0 08:21 ? 00:00:00 ps -ef[root@92c8d3a4bc2a /]# vim /etc/nginx/nginx.conf //修改配置文件添加 daemon off; //不在后台运行[root@92c8d3a4bc2a /]# nginx -t //验证配置文件语法是否有误nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful[root@92c8d3a4bc2a /]# exitexit[root@izm5edykqg8tzid352ga0iz mysql]# docker commit -m "my nginx" 92c8d3a4bc2a danny/nginx:v2 //再次提交修改版本v2sha256:062c8ef6e694b94fec7213bc8c65a055d75dc968fe2b671d97826381e0259f48[root@izm5edykqg8tzid352ga0iz mysql]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdanny/nginx v2 062c8ef6e694 9 seconds ago 427 MB //修改后提交的版本danny/nginx v1 a5d464ef190c 12 minutes ago 427 MBdocker.io/nginx latest 71c43202b8ac 4 days ago 109 MBdocker.io/centos latest 5182e96772bf 3 weeks ago 200 MBdocker.io/alpine latest 11cd0b38bc3c 8 weeks ago 4.41 MB[root@izm5edykqg8tzid352ga0iz mysql]# docker run -it -p 82:80 danny/nginx:v2 /usr/sbin/nginx //启动v2版本的容器08df10e92f9df846a840d61d10d07c045397e40ff06d9b4afdc09e4840266d23[root@izm5edykqg8tzid352ga0iz mysql]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES08df10e92f9d danny/nginx:v2 "/usr/sbin/nginx" 13 seconds ago Up 12 seconds 0.0.0.0:82->80/tcp optimistic_bardeen
然后就可以通过82端口访问了 http://IP:82
Dockerfile构建(快速构建镜像)
常用指令
FROM 指定基础镜像MAINTAINER 维护者信息RUN 加在命令前执行命令ADD copy文件,会自动解压WORKDIR 相当于cd进目录VOLUME 目录挂载EXPOSE 端口vim /opt/dockerfile/nginx/dockerfile#This docker file#VERSION 1#Author:danny#Base imageFROM centos#MAINTAINER danny danny@qq.com#CommandsRUN rpm -ivh https://mirrors.aliyun.com/centos/7.5.1804/extras/x86_64/Packages/epel-release-7-9.noarch.rpmRUN yum -y install nginxADD index.html /usr/share/nginx/html/index.html #ADD会自动解压RUN echo "daemon off;" >> /etc/nginx/nginx.confEXPOSE 80CMD ["nginx"][root@izm5edykqg8tzid352ga0iz nginx]# docker build -t mynginx:v3 /opt/dockerfile/nginx/
查看镜像制作结果
[root@izm5edykqg8tzid352ga0iz nginx]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmynginx v3 3cf3c3308849 8 minutes ago 429 MBdanny/nginx v2 062c8ef6e694 2 hours ago 427 MBdanny/nginx v1 a5d464ef190c 2 hours ago 427 MBdocker.io/nginx latest 71c43202b8ac 4 days ago 109 MBdocker.io/centos latest 5182e96772bf 3 weeks ago 200 MBdocker.io/alpine latest 11cd0b38bc3c 8 weeks ago 4.41 MB制作并启动容器[root@izm5edykqg8tzid352ga0iz nginx]# docker run -dit -p 82:80 --name mynginx_1 mynginx:v3 /usr/sbin/nginxc373c95329937126d3e879e78c24843f026547975185ce1b6ea655f8f8d5420d[root@izm5edykqg8tzid352ga0iz nginx]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESc373c9532993 mynginx:v3 "nginx" 4 seconds ago Up 4 seconds 0.0.0.0:82->80/tcp mynginx_1[root@izm5edykqg8tzid352ga0iz nginx]# curl -I http://localhost:82HTTP/1.1 200 OK...