linux怎么查看本机内存大小
279
2022-10-29
如何用Dockerfile制作镜像
一、实战任务
1.分别制作nginx镜像、php镜像、tomcat镜像
2.分别创建nginx:v1、php:v1、tomcatv1容器
3.测试部署环境是否成功
二、软件资源
ngnx-1.12.tar.gz php-5.6.31.tar.gz apache-tomcat-8.0.46.tar.gz jdk-8u45-linux-x64.tar.gz
1.构建nginx镜像操作步骤如下:
[root@docker build]# mkdir nginx php tomcat
[root@docker build]# cd nginx/
[root@docker nginx]#wget nginx]# ls
Dockerfile nginx-1.12.2.tar.gz nginx.conf
[root@docker nginx]# vim Dockerfile
FROM centos:7
Maintainer QQ:553752017
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
ADD nginx-1.12.2.tar.gz /tmp
RUN cd /tmp/nginx-1.12.2 && \
./configure --prefix=/usr/local/nginx && \
make -j 2 && \
make install
RUN rm -rf /tmp/nginx-1.12.2* && yum clean all
COPY nginx.conf /usr/local/nginx/conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["./sbin/nginx", "-g", "daemon off;"]
#执行构建命令
[root@docker nginx]# docker build -t nginx:v1 -f Dockerfile .
.................................
Sending build context to Docker daemon 988.2kB
Step 1/10 : FROM centos:7
---> 5e35e350aded
Step 2/10 : Maintainer QQ:553752017
---> Using cache
---> 11a2e96e1f13
Step 3/10 : RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
---> Using cache
---> 3da4882c306d
Step 4/10 : ADD nginx-1.12.2.tar.gz /tmp/
---> Using cache
---> 550f7b534b83
Step 5/10 : RUN cd /tmp/nginx-1.12.2 && ./configure --prefix=/usr/local/nginx && make -j 2 && make install
---> Using cache
---> 462971d932a0
Step 6/10 : RUN rm -rf /tmp/nginx-1.12.2* && yum clean all
---> Using cache
---> 158a763d2d22
Step 7/10 : COPY nginx.conf /usr/local/nginx/conf
---> f7d45342af34
Step 8/10 : WORKDIR /usr/local/nginx
---> Running in 56e57de7114a
Removing intermediate container 56e57de7114a
---> 1d9beff20301
Step 9/10 : EXPOSE 80
---> Running in 43607b680843
Removing intermediate container 43607b680843
---> e8e54c361899
Step 10/10 : CMD ["./sbin/nginx", "-g", "daemon off;"]
---> Running in cf5701630c49
Removing intermediate container cf5701630c49
---> e57249cd60a8
Successfully built e57249cd60a8
Successfully tagged nginx:v1
2.构建php:v1镜像操作步骤如下:
[root@docker build]# cd php
[root@docker php]# wget php]# vim Dockerfile
FROM centos:7
Maintainer QQ:553752017
RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-
devel libpng-devel openssl-devel
ADD php-5.6.31.tar.gz /tmp/
RUN cd /tmp/php-5.6.31 && \
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql --with-mysqli \
--with-openssl --with-zlib --with-curl --with-gd \
--with-jpeg-dir --with-png-dir --with-iconv \
--enable-fpm --enable-zip --enable-mbstring && \
make -j 4 && \
make install && \
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && \
sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.conf && \
sed -i "21a \daemonize = no" /usr/local/php/etc/php-fpm.conf
COPY php.ini /usr/local/php/etc
RUN rm -rf /tmp/php-5.6.31* && yum clean all
WORKDIR /usr/local/php
EXPOSE 9000
CMD ["./sbin/php-fpm", "-c", "/usr/local/php/etc/php-fpm.conf"]
#执行构建命令
[root@docker php]# docker build -t php:v1 -f Dockerfile .
Sending build context to Docker daemon 19.37MB
Step 1/10 : FROM centos:7
---> 5e35e350aded
Step 2/10 : Maintainer 553752017@qq.com
---> Using cache
---> 11a2e96e1f13
Step 3/10 : RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel
---> Using cache
---> e3c74f07abb9
Step 4/10 : ADD php-5.6.31.tar.gz /tmp/
---> Using cache
---> d197db984de6
Step 5/10 : RUN cd /tmp/php-5.6.31 && ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql --
with-mysqli --with-openssl --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-iconv --enable-fpm --enable-zip --
enable-mbstring && make -j 4 && make install && cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && sed -i
"s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.conf && sed -i "21a \daemonize = no" /usr/local/php/etc/php-fpm.conf
---> Using cache
---> f33889dc4ee4
Step 6/10 : COPY php.ini /usr/local/php/etc
---> 6b6912d90a05
Step 7/10 : RUN rm -rf /tmp/php-5.6.31* && yum clean all
---> Running in 8efdbfd6afc8
Loaded plugins: fastestmirror, ovl
Cleaning repos: base extras updates
Cleaning up list of fastest mirrors
Removing intermediate container 8efdbfd6afc8
---> c9e7b713a6d9
Step 8/10 : WORKDIR /usr/local/php
---> Running in 98cf881b3ff3
Removing intermediate container 98cf881b3ff3
---> 9c4d8c4eab4e
Step 9/10 : EXPOSE 9000
---> Running in 5546cc9dc8c2
Removing intermediate container 5546cc9dc8c2
---> 25ea626a1ef5
Step 10/10 : CMD ["./sbin/php-fpm", "-c", "/usr/local/php/etc/php-fpm.conf"]
---> Running in 882b11d2c83b
Removing intermediate container 882b11d2c83b
---> e23d0f45939c
Successfully built e23d0f45939c
Successfully tagged php:v1
3.构建tomcat:v1镜像操作步骤如下:
[root@docker tomcat]# wget tomcat]# ls
apache-tomcat-8.0.46.tar.gz Dockerfile jdk-8u45-linux-x64.tar.gz server.xml
[root@docker tomcat]# vim Dockerfile
FROM centos:7
Maintainer 557352017
ADD jdk-8u45-linux-x64.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk1.8.0_45
ADD apache-tomcat-8.0.46.tar.gz /usr/local
COPY server.xml /usr/local/apache-tomcat-8.0.46/conf
RUN rm -f /usr/local/*.tar.gz
WORKDIR /usr/local/apache-tomcat-8.0.46
EXPOSE 8080
ENTRYPOINT ["./bin/catalina.sh", "run"]
#执行构建命令
[root@docker tomcat]# docker build -t tomcat:v1 -f Dockerfile .
Sending build context to Docker daemon 182.6MB
Step 1/10 : FROM centos:7
---> 5e35e350aded
Step 2/10 : Maintainer 553752017
---> Running in 2681f6530548
Removing intermediate container 2681f6530548
---> 61029a905ecb
Step 3/10 : ADD jdk-8u45-linux-x64.tar.gz /usr/local
---> f3346896f9e8
Step 4/10 : ENV JAVA_HOME /usr/local/jdk1.8.0_45
---> Running in 013a7c5c596c
Removing intermediate container 013a7c5c596c
---> 3ee13626a6e9
Step 5/10 : ADD apache-tomcat-8.0.46.tar.gz /usr/local
---> a99d11025029
Step 6/10 : COPY server.xml /usr/local/apache-tomcat-8.0.46/conf
---> 2db699333a31
Step 7/10 : RUN rm -f /usr/local/*.tar.gz
---> Running in 61706caa370b
Removing intermediate container 61706caa370b
---> 5f6d51ceba3c
Step 8/10 : WORKDIR /usr/local/apache-tomcat-8.0.46
---> Running in 57f4fb62ef0f
Removing intermediate container 57f4fb62ef0f
---> 3fd66d921fc9
Step 9/10 : EXPOSE 8080
---> Running in e91be31aff9c
Removing intermediate container e91be31aff9c
---> 9cb258b9769a
Step 10/10 : ENTRYPOINT ["./bin/catalina.sh", "run"]
---> Running in d616186361dc
Removing intermediate container d616186361dc
---> b6935107d45e
Successfully built b6935107d45e
Successfully tagged tomcat:v1
5.查看镜像列表:说明成功构建镜像
6.根据构建好的nginx:v1、php:v1、tomcatv1镜像创建容器
1)创建 lnmp_php容器
[root@docker /]# docker network create lnmp
Error response from daemon: network with name lnmp already exists
[root@docker /]# docker run -itd --name lnmp_php --net lnmp --mount type=bind,src=/html/php:v1
133d4b1a309d72032f48370e7721ef6f34667cf08194874c39aff50fe9497d8e
2)创建lnmp_nginx容器
[root@docker /]# docker run -itd --name lnmp_nginx -p 8081:80 --net lnmp --mount type=bind,src=/html/nginx:v1
7cbeb3042ea2ba772c3e36acd0f9919e770a8e060654c4a5fca523505b66f0c1
3)创建lnmp_mysql数据库容器
[root@docker /]# docker run -itd --name lnmp_mysql --net lnmp -p 3306:3306 --mount src=mysql-vol,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=sky9890
mysql --character-set-server=utf8
5cf0a95045e5ad155462b58724dd38c2e5e87dfd21bb8f145adb17980dcbdb2e
4)创建tomcat容器
[root@docker tomcat]# mkdir /html/webapps/ROOT
[root@docker tomcat]# docker run -itd --name=tomcat -p 8080:8080 --mount type=bind,src=/html/webapps/ROOT
dst=/usr/local/apache-tomcat-8.0.46/webapps tomcat:v1
e3ac4cf268b085e31f1a1f9051a8b2471027b5ceea33c379bd73b05ac9ae1f52
8.进入nginx:v1、php:v1容器进行相关配置及测试
1)nginx:v1容器
[root@docker docker exec -it 133d4b1a309d sh
sh-4.2# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
sh-4.2# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1 root 6u IPv4 191056 0t0 TCP *:(LISTEN)
sh-4.2# netstat -tlnup
sh: netstat: command not found
sh-4.2# yum install net-tools
sh-4.2# netstat -tlnup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro
tcp 0 0 127.0.0.11:34201 0.0.0.0:* LISTEN -
udp 0 0 127.0.0.11:45038 0.0.0.0:* -
sh-4.2# ps -ef|grep nginx
root 1 0 0 04:40 pts/0 00:00:00 nginx: master process ./sbin/nginx -g daemon off;
nobody 143 1 0 06:15 pts/0 00:00:00 nginx: worker process
root 160 131 0 06:21 pts/2 00:00:00 grep nginx
2)php:v1容器
sh-4.2# lsof -i:9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 1 root 6u IPv4 184800 0t0 TCP *:cslistener (LISTEN)
sh-4.2# netstat -tlnu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.11:41149 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN
udp 0 0 127.0.0.11:39382 0.0.0.0:*
sh-4.2# ps -ef|grep php-fpm
root 1 0 0 04:25 pts/0 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody 6 1 0 04:25 pts/0 00:00:00 php-fpm: pool 7 1 0 04:25 pts/0 00:00:00 php-fpm: pool 115 85 0 06:23 pts/1 00:00:00 grep php-fpm
9.常见问题
1)ADD failed: stat /var/lib/docker/tmp/docker-builder062538323/nginx-1.12.1.tar.gz: no such file or directory
#上述原因是由于nginx-1.12.1版本写错了,所以找到原文件,实际版本是nginx-1.12.2.tar.gz
2)COPY failed: stat /var/lib/docker/tmp/docker-builder935959170/nginx.conf: no such file or directory
#上述原因是执行COPY nginx.conf /usr/local/nginx/conf时,当前目录下没找到nginx.conf文件
3)容器中的配置文件很重要,此次实验是失败的,无法解析PHP。
10.相关测试结果
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~