简单的Dockerfile书写(实例!!!)
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,一、Apachemkdir apachecd apachevim Dockerfile#基于的基础镜像FROM centos#维护镜像的用户信息MAINTAINER The porject #镜像操作
千家信息网最后更新 2025年02月12日简单的Dockerfile书写(实例!!!)
一、Apache
mkdir apachecd apachevim Dockerfile#基于的基础镜像FROM centos#维护镜像的用户信息MAINTAINER The porject #镜像操作指令安装apache软件RUN yum -y updateRUN yum -y install httpd#开启80端口EXPOSE 80 #复制网站首页文件ADD index.html /var/www/html/index.html#将执行脚本复制到镜像中ADD run.sh /run.shRUN chmod 755 /run.sh#启动容器时执行脚本CMD ["/run.sh"]vim run.sh#!/bin/bashrm -rf /run/httpd/*exec /usr/sbin/apachectl -D FOREGROUNDecho "web test" > index.html#生成镜像docker build -t httpd:centos .#新镜像运行容器docker run -d -p 1216:80 httpd:centos
二、Mysql 5.7.20
mount.cifs //192.168.142.1/LNMP /mntcd /mntcp mysql-boost-5.7.20.tar.gz /optcd /optmkdir mysqlmv mysql-boost-5.7.20.tar.gz /opt/mysqlcd mysql/vim my.cnf[client]port = 3306default-character-set=utf8socket = /usr/local/mysql/mysql.sock[mysql]port = 3306default-character-set=utf8socket = /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 = 1sql_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_QUOTESvim DockerfileFROM centos:7RUN yum -y install \ncurses \ncurses-devel \bison \cmake \make \gcc \gcc-c++RUN useradd -s /sbin/nologin mysqlADD mysql-boost-5.7.20.tar.gz /usr/local/srcWORKDIR /usr/local/src/mysql-5.7.20/RUN cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_UNIX_ADDR=/usr/local/mysq1/mysq1.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 && make installRUN chown -R mysql:mysql /usr/local/mysql/RUN rm -rf /etc/my.cnfADD my.cnf /etcRUN 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 echo -e "#!/bin/sh \nsystemctl enable mysqld" > /run.shRUN chmod 755 /run.shRUN sh /run.shCMD ["init"]docker build -t centos:mysql .docker run --name=mysql_server -d -P --privileged centos:mysql#进容器给权限docker exec -it 1fbcbbfec033 /bin/bashgrant all privileges on *.* to 'root'@'%' identified by 'abc123';grant all privileges on *.* to 'root'@'localhost' identified by 'abc123';#宿主系统安装mairdb客户端连接mysql容器mysql -h 192.168.142.128 -u root -P 32770 -pabc23
三、Tomcat
mount.cifs //192.168.142.1/tomcat /mntcd /mntcp jdk-8u91-linux-x64.tar.gz /optcp apache-tomcat-8.5.16.tar.gz /optcd /optmkdir /tomcat#拷贝jdk-8u91-linux-x64.tar.gz#apache-tomcat-8.5.16.tar.gz到/opt/tomcat下mv apache-tomcat-8.5.16.tar.gz /opt/tomcat/mv jdk-8u91-linux-x64.tar.gz /opt/tomcat/cd /opt/tomcatvim DockerfileFROM centos:7MAINTAINER this is tomcat image ADD jdk-8u91-linux-x64.tar.gz /rootRUN mv /root/jdk1.8.0_91/ /usr/local/jdk1.8ENV JAVA_HOME=/usr/local/jdk1.8ENV CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarENV PATH=$JAVA_HOME/bin:$PATHADD apache-tomcat-8.5.16.tar.gz /rootRUN mv /root/apache-tomcat-8.5.16/ /usr/local/tomcatRUN ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/;ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/EXPOSE 8080ENTRYPOINT /usr/local/tomcat/bin/startup.sh && /bin/bash && tail -f /usr/local/tomcat/logs/catalina.outdocker build -t tomcat:centos .docker run -d --name tomcat01 -p 1216:8080 -it tomcat:centos
四、Ngnix1.9.7
mkdir nginxcd nginxvim Dockerfile #基于基础镜像FROM centos:7#用户信息MAINTAINER The is nginx #添加环境包RUN yum install -y proc-devel gcc gcc-c++ zlib zlib-devel make openssl-devel wget#下载nginx软件包RUN wget http://nginx.org/download/nginx-1.9.7.tar.gzRUN tar zxvf nginx-1.9.7.tar.gz#指定工作目录WORKDIR nginx-1.9.7/RUN ./configure --prefix=/usr/local/nginx && make && make install#指定http和https端口EXPOSE 80EXPOSE 443#关闭守护进程RUN echo "daemon off;" >>/usr/local/nginx/conf/nginx.confWORKDIR /root/nginx#添加宿主机中run.sh到容器中ADD run.sh /run.shRUN chmod 755 /run.shCMD ["/run.sh"]vim run.sh#!/bin/bash/usr/local/nginx/sbin/nginxdocker build -t nginx:new .docker run -d -P nginx:new
五、ssh
mkdir sshdcd sshdvim DockerfileFROM centosMAINTAINER The CentOS Project RUN yum -y updateRUN yum -y install openssh* net-tools lsof telnet passwdRUN echo '123456' | passwd --stdin rootRUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_configRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_keyRUN sed -i '/^session\s\+repuired\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshdRUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.sshEXPOSE 22CMD ["/usr/sbin/sshd","-D"]#生成镜像docker build -t sshd:new .#启动容器并修改root密码docker run -d -P sshd:newssh localhost -p 32770
六、systemctl
mkdir systemctlcd systemctlvim DockerfileFROM sshd:newENV container dockerRUN (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 local/c7-systemd:latest .#privateged container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。docker run --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro local/c7-systemd:latest /sbin/init#进入容器docker exec -it 容器ID bashsystemctl status sshd
七、删除冗余镜像
#!/bin/bashdocker ps -a | grep "Exited" | awk '{print $1 }' | xargs docker stopdocker ps -a | grep "Exited" | awk '{print $1 }' | xargs docker rmdocker images | grep none | awk '{print $3 }' | xargs docker rmi
容器
镜像
权限
用户
信息
基础
宿主
端口
脚本
软件
生成
普通
冗余
只是
客户
客户端
宿主机
密码
拷贝
指令
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
抽取一段数据中部分数据库
审计厅网络安全
数据库执行后0行受影响
贵州拨号服务器
山东兴趣少儿编程软件开发
潜山软件开发专业
服务器策略指的哪些
金华协同软件开发
潍坊科技学院网络技术属于什么系
乱插u盘网络安全
数据库学生社团管理系统
医院信访网络安全防护自查
mvc5 服务器
筑牢网络安全防线微课
单位服务器出现木马
网络安全必读书目
安阳市委网络安全局
合肥软件开发行业工资
甲骨文云全免费服务器
哪里可以找到好的服务器监控
济南地产软件开发
互联网和云服务器有什么用
达梦数据库的估值
现在数据库用什么软件开发
泰克网络技术有限公司
泰兴购买网络技术厂家价格
拒绝沉迷网络安全上网议论文
服务器配置与管理的地位
电子政务外网服务器连接中断
国际旅游网络技术