简单的Dockerfile书写(实例!!!)
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,一、Apachemkdir apachecd apachevim Dockerfile#基于的基础镜像FROM centos#维护镜像的用户信息MAINTAINER The porject #镜像操作
千家信息网最后更新 2025年12月02日简单的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安全错误
数据库的锁怎样保障安全
云赞客网络技术有限公司
辽宁数据软件开发服务优化
cmdb 数据库表 关系
济南西站附近软件开发公司
高级数据库技术是什么
网络安全中最核心的要素
nat dmz服务器
软件开发方法的不同点
崇明区软件开发诚信服务
哪个数据库查重最接近知网
中兴软件开发西安面试
软件开发 委托 税
数据库密码转换
三级网络技术二级
护苗成长网络安全课
肇庆安卓软件开发方案
卡西欧蓝牙对时服务器
服务器如何调整居民内存
电脑怎么做基础软件开发
车载网络技术思维导图
怎么判断服务器是否域控
网络安全宣传创意图片
科脉御商v9服务器搭建
政府网站网络安全浅析
方舟人物怎么上传服务器
盐城防爆刀片服务器厂家
方舟进化生存服务器怎么创建角色
怎么自己创建vpn服务器
互联网科技创新发明
软件开发合同标准模板文库