构建nginxDockerfile镜像
这里的nginx软件包使用nginx-1.12.2.tar.gz需要的私聊
[root@docker ~]# mkdir /nginx [root@docker ~]# cd /nginx/ [root@docker nginx]# vim Dockerfile FROM centos:7 RUN yum update -y RUN yum -y install gcc gcc-c++ make pcre-devel expat-devel perl zlib-devel pcre RUN useradd -M -s /sbin/nologin nginx ADD nginx-1.12.2.tar.gz /usr/local WORKDIR /usr/local/nginx-1.12.2 RUN (./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module) && make && make install ENV PATH /usr/local/nginx/sbin/:$PATH EXPOSE 80 EXPOSE 443 RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf '关闭nginx自带的守护进程' CMD ["/usr/local/nginx/sbin/nginx"] 这里指定的是在centos7下安装 要指定版本 [root@docker nginx]# rz -E '//上传nginx源码包' rz waiting to receive. [root@docker nginx]# ls Dockerfile nginx-1.12.2.tar.gz [root@docker nginx]# docker build -t nginx:test . [root@docker nginx]# docker run -d -P nginx:test1 885cf9811be57e12690ce352fbd7c5011cefffece8b59a0d7317e12eb8955a70 [root@docker nginx]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e34b0c nginx:test1 "/usr/local/nginx/sb…" 2 minutes ago Up 2 minutes 0.0.0.0:32784->22/tcp, 0.0.0.0:32783->80/tcp, 0.0.0.0:32782->443/tcp zen_hellman
创建容器,指定端口
[root@docker nginx]# docker run -d -P nginx:test1 885cf9811be57e12690ce352fbd7c5011cefffece8b59a0d7317e12eb8955a70 [root@docker nginx]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e34b0c nginx:test1 "/usr/local/nginx/sb…" 2 minutes ago Up 2 minutes 0.0.0.0:32784->22/tcp, 0.0.0.0:32783->80/tcp, 0.0.0.0:32782->443/tcp zen_hellman [root@docker nginx]# ip addr '//自己IP地址为 192.168.233.133' 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:68:b8:a6 brd ff:ff:ff:ff:ff:ff inet 192.168.233.133/24 brd 192.168.233.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet6 fe80::35a9:b12:5e2b:c44d/64 scope link noprefixroute valid_lft forever preferred_lft forever ...省略内容
构建DockerfileTomcat
[root@docker nginx]# mkdir /tomcat [root@docker nginx]# cd /tomcat/ [root@docker tomcat]# vim Dockerfile FROM centos MAINTAINER this is tomcat ADD jdk-8u201-linux-x64.rpm /usr/local/ WORKDIR /usr/local/ RUN rpm -ivh jdk-8u201-linux-x64.rpm ENV JAVA_HOME /usr/java/jdk1.8.0_201-amd64 ENV CLASSPATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar ENV PATH $JAVA_HOME/bin:$PATH ADD apache-tomcat-9.0.16.tar.gz /usr/local WORKDIR /usr/local RUN mv apache-tomcat-9.0.16/ /usr/local/tomcat9 ENV PATH /usr/local/tomcat9/bin/:$PATH EXPOSE 8080 ENTRYPOINT ["/usr/local/tomcat9/bin/catalina.sh","run"] [root@docker tomcat]# docker build -t tomcat:test . '创建镜像' [root@docker tomcat]# docker run -d -P tomcat:test '启动镜像' [root@docker tomcat]# docker ps -a |grep tomcat f4afd19d14d3 tomcat:test1 "/usr/local/src/tomc…" 25 seconds ago Up 23 seconds 0.0.0.0:32788->22/tcp, 0.0.0.0:32787->8080/tcp lucid_tesla
1、ENRYPOINT指开启容器前镜像就已经执行了括号内的命令
2、CMD是开启容器时,要执行的指令,设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换
3、基于Dockerfile内有CMD或者ENTRYPOINT创建镜像时,docker run 后面就不要加指令(/bin/bash)了,会覆盖掉Dockerfile中的指令或者语法报错
构建Dockerfile MySQL镜像
vim Dockerfile #编写dockerfile文件 FROM centos:7 #指定基础镜像 RUN yum -y update #更新yum源 RUN yum -y install \ ncurses \ ncurses-devel \ bison \ cmake \ make \ gcc \ gcc-c++ #安装mysql依懒环境包 RUN useradd -s /sbin/nologin mysql #创建运行用户 ADD mysql-boost-5.7.20.tar.gz /usr/local/src #将压缩包添加到/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 && make install #cmake和编译 RUN chown -R mysql:mysql /usr/local/mysql/ #给予/usr/local/mysql的属主和属组 RUN rm -rf /etc/my.cnf #删除原来的/etc/my.cnf文件 ADD my.cnf /etc #将宿主机的my.cnf文件添加到/etc/目录下面 RUN chown mysql:mysql /etc/my.cnf #设置权限 ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH #设置mysql的环境 WORKDIR /usr/local/mysql/ #指定当前工作路径 RUN bin/mysqld \ --initialize-insecure \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data #初始化数据库 RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ #将mysql的启动脚本复制到/usr/lib/systemd/system/目录下面,便于systemctl的管理 EXPOSE 3306 #开放容器的端口 RUN echo -e "#!/bin/bash \nsystemctl enable mysqld" > /run.sh #写mysql的启动脚本 RUN chmod 755 /run.sh #给予权限 RUN sh /run.sh #执行脚本 CMD ["init"] #容器启动时执行
vim my.cnf [root@localhost mysql-5.7.20]#vi /etc/my.cnf [client] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock [mysql] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock [mysqld] user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 character_set_server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket = /usr/local/mysql/mysql.sock server-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
构建mysql:new的镜像 docker build -t centos:mysql . 1 启动容器 docker run --name=mysql_server -d -P --privileged centos:mysql 1 提权 docker exec -it 镜像ID /bin/bash grant all privileges on *.* to 'root'@'%' identified by 'abc123'; grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123'; privileges on *.* to 'root'@'%' identified by 'abc123'; grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123';
今天的文章
这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx、Tomcat、MySQL镜像分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/83499.html