使用Dockerfile构建镜像

网友投稿 248 2022-11-03

使用Dockerfile构建镜像

一、构建SSH镜像创建镜像目录方便管理mkdir /opt/sshdcd /opt/sshd

创建编写dockerfile文件vim Dockerfile

二、构建Systemctl镜像创建镜像目录方便管理mkdir /opt/systemctlcd /opt/systemctl

创建编写dockerfile文件vim Dockerfile

FROM sshd:centosMAINTAINER this is systemctl image ENV container docker#除了systemd-tmpfiles-setup.service,删除其它所有文件RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in ; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \rm -f /lib/systemd/system/multi-user.target.wants/; \rm -f /etc/systemd/system/.wants/; \rm -f /lib/systemd/system/local-fs.target.wants/; \rm -f /lib/systemd/system/sockets.target.wants/udev; \rm -f /lib/systemd/system/sockets.target.wants/initctl; \rm -f /lib/systemd/system/basic.target.wants/;\rm -f /lib/systemd/system/anaconda.target.wants/*;VOLUME [ "/sys/fs/cgroup" ] #创建挂载点

CMD ["/usr/sbin/init"]

生成镜像docker build -t systemd:centos .

#启动容器,并挂载宿主机目录挂载到容器中,和进行初始化docker run --privileged -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemd:centos /sbin/init &#--privileged:使container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。

三、构建tomcat镜像创建镜像目录方便管理mkdir /opt/tomcat

创建编写dockerfile文件vim Dockerfile

1、构建Nginx镜像(容器IP 为 172.18.0.10)上传 nginx-1.12.0.tar.gz、wordpress-4.9.4-zh_CN.tar.gz 到 /opt/nginx/ 目录中mkdir -p /opt/nginx/htmltar zxvf wordpress-4.9.4-zh_CN.tar.gz -C /opt/nginx/html

vim Dockerfile

FROM centos:7MAINTAINER this is nginx image RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ makeRUN useradd -M -s /sbin/nologin nginxADD nginx-1.12.0.tar.gz /usr/local/src/WORKDIR /usr/local/src/nginx-1.12.0RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-&& make && make installENV PATH /usr/local/nginx/sbin:$PATHADD nginx.conf /usr/local/nginx/conf/ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html/RUN chmod 777 -R /usr/local/nginx/html/EXPOSE 80EXPOSE 443ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]

2、构建mysql(172.18.0.20)mkdir /opt/mysqldcd /opt/mysqld

上传 mysql-boost-5.7.20.tar.gz 到 /opt/mysqld 目录中

vim Dockerfile

FROM centos:7

MAINTAINER this is mysql image RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake makeRUN useradd -M -s /sbin/nologin mysqlADD mysql-boost-5.7.20.tar.gz /usr/local/src/WORKDIR /usr/local/src/mysql-5.7.20/RUN cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \-DSYSCONFDIR=/etc \-DSYSTEMD_PID_DIR=/usr/local/mysql \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \-DMYSQL_DATADIR=/usr/local/mysql/data \-DWITH_BOOST=boost \-DWITH_SYSTEMD=1 && make -j4 && make installRUN chown -R mysql:mysql /usr/local/mysql/ADD my.cnf /etc/my.cnfRUN chown mysql:mysql /etc/my.cnfENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATHWORKDIR /usr/local/mysql/RUN ./bin/mysqld \--initialize-insecure \--user=mysql \--basedir=/usr/local/mysql \--datadir=/usr/local/mysql/dataRUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/EXPOSE 3306RUN systemctl enable mysqldVOLUME [ "/usr/local/mysql" ]CMD /usr/sbin/init

vim my.cnf[client]port = 3306socket = /usr/local/mysql/mysql.sock

[mysql]port = 3306socket = /usr/local/mysql/mysql.sock

[mysqld]user = mysqlbasedir = /usr/local/mysqldatadir = /usr/local/mysql/dataport = 3306character_set_server=utf8pid-file = /usr/local/mysql/mysqld.pidsocket = /usr/local/mysql/mysql.sockserver-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

3、部署php(容器IP 为 172.18.0.30)mkdir /opt/phpcd /opt/php

上传 php-7.1.10.tar.bz2 到 /opt/php 目录中

vim Dockerfile

FROM centos:7MAINTAINER this is php image RUN yum -y install gd \libjpeg libjpeg-devel \libpng libpng-devel \freetype freetype-devel \libxml2 libxml2-devel \zlib zlib-devel \curl curl-devel \openssl openssl-devel \gcc gcc-c++ make pcre-develRUN useradd -M -s /sbin/nologin nginxADD php-7.1.10.tar.bz2 /usr/local/src/WORKDIR /usr/local/src/php-7.1.10RUN ./configure \--prefix=/usr/local/php \--with-mysql-sock=/usr/local/mysql/mysql.sock \--with-mysqli \--with-zlib \--with-curl \--with-gd \--with-jpeg-dir \--with-png-dir \--with-freetype-dir \--with-openssl \--enable-fpm \--enable-mbstring \--enable-xml \--enable-session \--enable-ftp \--enable-pdo \--enable-tokenizer \--enable-zip && make && make installENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATHADD php.ini /usr/local/php/lib/ADD php-fpm.conf /usr/local/php/etc/ADD conf /usr/local/php/etc/php-fpm.d/EXPOSE 9000ENTRYPOINT [ "/usr/local/php/sbin/php-fpm", "-F" ]

docker build -t php:lnmp .docker run --name=php -d -p 9000:9000 --volumes-from mysql --volumes-from nginx --net mynetwork --ip 172.18.0.30 php:lnmp

docker exec -it mysql /bin/bash

测试结果:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Docker-compose的简单编排部署
下一篇:基于Proteus的SPI接口的设计与实现方案资料分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~