docker案例
docker案例
1 构建nginx镜像
[root@ws ~]# cat Dockerfile
FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
ADD Centos-7.repo /etc/yum.repos.d/
ADD epel-7.repo /etc/yum.repos.d/
RUN yum -y install nginx
EXPOSE 80
CMD ["/usr/sbin/nginx","-g","daemon off;"]
[root@ws ~]# docker build -t nginx1:v1 .
[+] Building 0.1s (10/10) FINISHED docker:default=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 232B 0.0s=> [internal] load metadata for docker.io/library/centos:7 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [1/5] FROM docker.io/library/centos:7 0.0s=> [internal] load build context 0.0s=> => transferring context: 66B 0.0s=> CACHED [2/5] RUN rm -rf /etc/yum.repos.d/* 0.0s=> CACHED [3/5] ADD Centos-7.repo /etc/yum.repos.d/ 0.0s=> CACHED [4/5] ADD epel-7.repo /etc/yum.repos.d/ 0.0s=> CACHED [5/5] RUN yum -y install nginx 0.0s=> exporting to image 0.0s=> => exporting layers 0.0s=> => writing image sha256:9938daad6f816166caca430a9093467d92319f05683c684b5f911dc732a16216 0.0s=> => naming to docker.io/library/nginx1:v1 0.0s
[root@ws ~]# docker run -itd --name nginx2 -P nginx1:v1
ec680db05bd6652c88c11518f3dcae6a9aebc6bee2ec70b28d1ca65462243cd0
[root@ws ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec680db05bd6 nginx1:v1 "/usr/sbin/nginx -g …" 5 seconds ago Up 3 seconds 0.0.0.0:32771->80/tcp, :::32771->80/tcp nginx2
[root@ws ~]# docker exec -it nginx2 /bin/bash
[root@ec680db05bd6 /]# cd /usr/share/nginx/
[root@ec680db05bd6 nginx]# ls
html modules
[root@ec680db05bd6 nginx]# cd html/
[root@ec680db05bd6 html]# ls
404.html 50x.html en-US icons img index.html nginx-logo.png poweredby.png
[root@ec680db05bd6 html]# rm -rf index.html
[root@ec680db05bd6 html]# echo 123456 > index.html
[root@ec680db05bd6 html]# ls
404.html 50x.html en-US icons img index.html nginx-logo.png poweredby.png
测试
2 扫雷游戏案例
新建dockerfile
[root@ws ~]# cat Dockerfile
FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
ADD Centos-7.repo /etc/yum.repos.d/
ADD epel-7.repo /etc/yum.repos.d/
RUN yum -y install tomcat unzip
WORKDIR /var/lib/tomcat/webapps/
ADD saolei.zip .
RUN unzip saolei.zip
RUN mv saolei ROOT
ADD init.sh /init.sh
EXPOSE 8080
CMD ["/bin/bash","/init.sh"]
新建init.sh脚本
[root@ws ~]# cat init.sh
#!/bin/bash
/usr/libexec/tomcat/server start
构建saolei:v1镜像
[root@ws ~]# docker build -t saolei:v1 .
[+] Building 0.1s (15/15) FINISHED docker:default=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 338B 0.0s=> [internal] load metadata for docker.io/library/centos:7 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [ 1/10] FROM docker.io/library/centos:7 0.0s=> [internal] load build context 0.0s=> => transferring context: 123B 0.0s=> CACHED [ 2/10] RUN rm -rf /etc/yum.repos.d/* 0.0s=> CACHED [ 3/10] ADD Centos-7.repo /etc/yum.repos.d/ 0.0s=> CACHED [ 4/10] ADD epel-7.repo /etc/yum.repos.d/ 0.0s=> CACHED [ 5/10] RUN yum -y install tomcat unzip 0.0s=> CACHED [ 6/10] WORKDIR /var/lib/tomcat/webapps/ 0.0s=> CACHED [ 7/10] ADD saolei.zip . 0.0s=> CACHED [ 8/10] RUN unzip saolei.zip 0.0s=> CACHED [ 9/10] RUN mv saolei ROOT 0.0s=> CACHED [10/10] ADD init.sh /init.sh 0.0s=> exporting to image 0.0s=> => exporting layers 0.0s=> => writing image sha256:a21c0af388d89d2282e71cb46031d26 0.0s=> => naming to docker.io/library/saolei:v1 0.0s
运行saolei容器
[root@ws ~]# docker run -itd --name saolei -P saolei:v1
beaa1c2190637e02959ab96e94acb6bf1c0587b22fdd77176b0346b131c1222b
[root@ws ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
beaa1c219063 saolei:v1 "/bin/bash /init.sh" 7 seconds ago Up 6 seconds 0.0.0.0:32773->8080/tcp, :::32773->8080/tcp saolei
ec680db05bd6 nginx1:v1 "/usr/sbin/nginx -g …" 18 minutes ago Up 18 minutes 0.0.0.0:32771->80/tcp, :::32771->80/tcp nginx2
测试
3 可道云平台案例
[root@ws kod]# pwd
/opt/dockerfile/kod
[root@ws kod]# rz -E
rz waiting to receive.
[root@ws kod]# rz -E
rz waiting to receive.
[root@ws kod]# ls
kodexplorer4.40.zip nginx.conf
[root@ws kod]#
[root@ws kod]# cat dockerfile
FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
ADD Centos-7.repo /etc/yum.repos.d/
ADD epel-7.repo /etc/yum.repos.d/
RUN yum -y install nginx php-fpm php-gd php-mbstring unzip
RUN sed -i '/^user/c user=nginx' /etc/php-fpm.d/www.conf
RUN sed -i '/^group/c group=nginx' /etc/php-fpm.d/www.conf
COPY nginx.conf /etc/nginx/nginx.conf
RUN mkdir /code
WORKDIR /code
COPY kodexplorer4.40.zip .
RUN unzip kodexplorer4.40.zip
RUN chown -R nginx.nginx .
ADD init.sh /init.sh
EXPOSE 80
ENTRYPOINT ["/bin/bash","/init.sh"]
[root@ws kod]# cat init.sh
#!/bin/bash
php-fpm -D
nginx -g 'daemon off;'
[root@ws kod]# docker build -t kod:v1 .
[+] Building 67.9s (19/19) FINISHED docker:default=> [internal] load build definition from dockerfile 0.0s=> => transferring dockerfile: 547B 0.0s=> [internal] load metadata for docker.io/library/centos:7 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [ 1/14] FROM docker.io/library/centos:7 0.0s=> [internal] load build context 0.0s=> => transferring context: 163B 0.0s=> CACHED [ 2/14] RUN rm -rf /etc/yum.repos.d/* 0.0s=> CACHED [ 3/14] ADD Centos-7.repo /etc/yum.repos.d/ 0.0s=> CACHED [ 4/14] ADD epel-7.repo /etc/yum.repos.d/ 0.0s=> [ 5/14] RUN yum -y install nginx php-fpm php-gd php-mbstring unzip 60.4s=> [ 6/14] RUN sed -i '/^user/c user=nginx' /etc/php-fpm.d/www.conf 0.5s => [ 7/14] RUN sed -i '/^group/c group=nginx' /etc/php-fpm.d/www.conf 0.5s => [ 8/14] COPY nginx.conf /etc/nginx/nginx.conf 0.1s => [ 9/14] RUN mkdir /code 0.5s => [10/14] WORKDIR /code 0.1s => [11/14] COPY kodexplorer4.40.zip . 0.1s => [12/14] RUN unzip kodexplorer4.40.zip 1.4s=> [13/14] RUN chown -R nginx.nginx . 2.3s=> [14/14] ADD init.sh /init.sh 0.1s => exporting to image 1.8s => => exporting layers 1.8s => => writing image sha256:12d0fbbcfedc820565f9d651dbbfc894948cca49ae65982b63cc422c69f15a60 0.0s => => naming to docker.io/library/kod:v1 0.0s[root@ws kod]# docker run -itd --name kod -P kod:v1
08d0a2776b89be44621fdabbba4eb5d348cbda782c6e172e65b6a94429a1b195
[root@ws kod]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
08d0a2776b89 kod:v1 "/bin/bash /init.sh" 6 seconds ago Up 5 seconds 0.0.0.0:32774->80/tcp, :::32774->80/tcp kod
beaa1c219063 saolei:v1 "/bin/bash /init.sh" 22 minutes ago Up 22 minutes 0.0.0.0:32773->8080/tcp, :::32773->8080/tcp saolei
ec680db05bd6 nginx1:v1 "/usr/sbin/nginx -g …" 41 minutes ago Up 41 minutes 0.0.0.0:32771->80/tcp, :::32771->80/tcp nginx2
测试