vps网站建站助手,网站开发ckplayer加载失败,wordpress如何添加广告,哈尔滨小程序建设华子目录 示例#xff08;在centos容器中源码编译nginx#xff08;单介构建#xff09;#xff09;包准备为centos容器提供网络源添加企业7的ISO文件 提交为新的centos镜像编写dockerfile文件构建镜像如何优化自己构建的镜像大小多介构建 ldd命令基本用法示例 镜像优化方案… 华子目录 示例在centos容器中源码编译nginx单介构建包准备为centos容器提供网络源添加企业7的ISO文件 提交为新的centos镜像编写dockerfile文件构建镜像如何优化自己构建的镜像大小多介构建 ldd命令基本用法示例 镜像优化方案 示例在centos容器中源码编译nginx单介构建
单介构建只有一个from指令
包准备 上传镜像centos-7.tar.gz 导入centos7镜像
[rootdocker-node1 ~]# docker load -i centos-7.tar.gz上传源码包nginx-1.26.1.tar.gz将nginx源码包放到上下文路径下
[rootdocker-node1 ~]# cp nginx-1.26.1.tar.gz docker/
[rootdocker-node1 ~]# cd docker/
[rootdocker-node1 docker]# ls
nginx-1.26.1.tar.gz为centos容器提供网络源 宿主机光盘中的包作为容器的yum网络源 [rootdocker-node1 ~]# yum install httpd -y[rootdocker-node1 ~]# vim /etc/httpd/conf/httpd.conf添加企业7的ISO文件 [rootdocker-node1 ~]# mkdir /var/www/html/rhel7[rootdocker-node1 ~]# mount /dev/sr
sr0 sr1[rootdocker-node1 ~]# mount /dev/sr1 /var/www/html/rhel7/[rootdocker-node1 ~]# systemctl restart httpd[rootdocker-node1 ~]# ifconfig运行centos7镜像容器名为centos
[rootdocker-node1 ~]# docker run -d --name centos centos:7 sleep 10000查看centos容器的详细信息
[rootdocker-node1 ~]# docker inspect centos我们发现宿主机和centos容器的网络是通的
[rootdocker-node1 ~]# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) 比特的数据。
64 比特来自 172.17.0.2: icmp_seq1 ttl64 时间0.341 毫秒
64 比特来自 172.17.0.2: icmp_seq2 ttl64 时间0.156 毫秒
64 比特来自 172.17.0.2: icmp_seq3 ttl64 时间0.070 毫秒进入centos容器添加yum源
[rootdocker-node1 ~]# docker exec -it centos /bin/sh
sh-4.2# cd /etc/yum.repos.d/
sh-4.2# rm -rf *
sh-4.2# vi centos7.repo
[rhel7]
namerhel7
baseurlhttp://172.17.0.1:8080/rhel7/
gpgcheck0
sh-4.2# #ctrlpq退出不停止容器
[rootdocker-node1 ~]#提交为新的centos镜像
[rootdocker-node1 ~]# docker commit -a huazi -m add yum repo centos centos:repo[rootdocker-node1 ~]# docker images centos:repo
REPOSITORY TAG IMAGE ID CREATED SIZE
centos repo c618983b610f About a minute ago 204MB[rootdocker-node1 ~]# docker history centos:repo
IMAGE CREATED CREATED BY SIZE COMMENT
c618983b610f 44 seconds ago sleep 10000 72B add yum repo
eeb6ee3f44bd 3 years ago /bin/sh -c #(nop) CMD [/bin/bash] 0B
missing 3 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
missing 3 years ago /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4… 204MB编写dockerfile文件
[rootdocker-node1 ~]# cd docker
[rootdocker-node1 docker]# vim dockerfile
FROM centos:repo
LABEL Mailhuazihuazi.org
ADD nginx-1.26.1.tar.gz /mnt
WORKDIR /mnt/nginx-1.26.1
RUN yum install gcc make pcre-devel openssl-devel -y
RUN ./configure --prefix/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
RUN make
RUN make install
EXPOSE 80 443
VOLUME [/usr/local/nginx/html]
CMD [/usr/local/nginx/sbin/nginx,-g,daemon off][rootdocker-node1 docker]# ls
dockerfile nginx-1.26.1.tar.gz构建镜像
[rootdocker-node1 docker]# docker build -t nginx:centos7 .[rootdocker-node1 docker]# docker history nginx:centos7
IMAGE CREATED CREATED BY SIZE COMMENT
939f29314f9a About a minute ago CMD [/usr/local/nginx/sbin/nginx -g dae… 0B buildkit.dockerfile.v0
missing About a minute ago VOLUME [/usr/local/nginx/html] 0B buildkit.dockerfile.v0
missing About a minute ago EXPOSE map[443/tcp:{} 80/tcp:{}] 0B buildkit.dockerfile.v0
missing About a minute ago RUN /bin/sh -c make install # buildkit 6.11MB buildkit.dockerfile.v0
missing About a minute ago RUN /bin/sh -c make # buildkit 20.6MB buildkit.dockerfile.v0
missing About a minute ago RUN /bin/sh -c ./configure --prefix/usr/loc… 78.9kB buildkit.dockerfile.v0
missing About a minute ago RUN /bin/sh -c yum install gcc make pcre-dev… 118MB buildkit.dockerfile.v0
missing About a minute ago WORKDIR /mnt/nginx-1.26.1 0B buildkit.dockerfile.v0
missing About a minute ago ADD nginx-1.26.1.tar.gz /mnt # buildkit 7.35MB buildkit.dockerfile.v0
missing About a minute ago LABEL Mailhuazihuazi.org 0B buildkit.dockerfile.v0
missing About a minute ago /bin/sh 68B add centos7.repo
missing 3 years ago /bin/sh -c #(nop) CMD [/bin/bash] 0B
missing 3 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
missing 3 years ago /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4… 204MB[rootdocker-node1 docker]# docker images nginx:centos7
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx centos7 939f29314f9a About a minute ago 356MB我们发现构建出来的镜像大小为356MB
如何优化自己构建的镜像大小
因为一个指令为一层所以我们可以减少层数来优化镜像大小
[rootdocker-node1 docker]# vim dockerfile
FROM centos:repo
LABEL Mailhuazihuazi.org
ADD nginx-1.26.1.tar.gz /mnt
WORKDIR /mnt/nginx-1.26.1
RUN yum install gcc make pcre-devel openssl-devel -y ./configure --prefix/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module make make install rm -rf /mnt/nginx-1.26.1 yum clean all
EXPOSE 80 443
VOLUME [/usr/local/nginx/html]
CMD [/usr/local/nginx/sbin/nginx,-g,daemon off][rootdocker-node1 docker]# docker build -t nginx2:centos7 .[rootdocker-node1 docker]# docker images nginx2:centos7
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx2 centos7 643164382b66 41 seconds ago 292MB我们发现镜像大小变小了
多介构建
一个dockerfile中有多个from指令
FROM centos:repo AS build #AS标记为build阶段
LABEL Mailhuazihuazi.org
ADD nginx-1.26.1.tar.gz /mnt
WORKDIR /mnt/nginx-1.26.1
RUN yum install gcc make pcre-devel openssl-devel -y ./configure --prefix/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module make make install rm -rf /mnt/nginx-1.26.1 yum clean allFROM centos:repo
LABEL mailhuazihuazi.org
COPY --frombuild /usr/local/nginx /usr/local/nginx #将build阶段中的/usr/local/nginx复制到当前阶段中的/usr/local/nginx
EXPOSE 80 443
VOLUME [/usr/local/nginx/html]
CMD [/usr/local/nginx/sbin/nginx,-g,daemon off][rootdocker-node1 docker]# docker build -t nginx3:centos7 .[rootdocker-node1 docker]# docker images nginx3:centos7
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx3 centos7 27a5c3dd15c1 14 seconds ago 210MB我们发现镜像大小变小了
ldd命令
当你对一个可执行文件或共享库使用ldd命令时它会列出该文件所依赖的所有共享库以及这些共享库在文件系统中的路径
基本用法
ldd 可执行文件或共享库示例
假设你有一个名为my_program的可执行文件你可以使用以下命令来查看它的共享库依赖关系
ldd my_program输出可能类似于 linux-vdso.so.1 (0x00007fffdc9d7000)libm.so.6 /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8a6c61c000)libc.so.6 /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8a6c22b000)/lib64/ld-linux-x86-64.so.2 (0x00007f8a6c91b000)这里my_program依赖于libm.so.6数学库、libc.so.6C标准库和ld-linux-x86-64.so.2动态链接器/加载器
镜像优化方案
选择最精简的基础镜像减少镜像的层数清理镜像构建的中间产物