1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx Tomcat MySQL镜像

这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx Tomcat MySQL镜像

时间:2020-03-09 06:48:21

相关推荐

这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx Tomcat MySQL镜像

文章目录

构建nginxDockerfile镜像构建DockerfileTomcat构建Dockerfile MySQL镜像

构建nginxDockerfile镜像

这里的nginx软件包使用nginx-1.12.2.tar.gz需要的私聊

[root@docker ~]# mkdir /nginx[root@docker ~]# cd /nginx/[root@docker nginx]# vim DockerfileFROM centos:7RUN yum update -yRUN yum -y install gcc gcc-c++ make pcre-devel expat-devel perl zlib-devel pcreRUN useradd -M -s /sbin/nologin nginxADD nginx-1.12.2.tar.gz /usr/localWORKDIR /usr/local/nginx-1.12.2RUN (./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module) && make && make installENV PATH /usr/local/nginx/sbin/:$PATHEXPOSE 80EXPOSE 443RUN 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]# lsDockerfile nginx-1.12.2.tar.gz[root@docker nginx]# docker build -t nginx:test .[root@docker nginx]# docker run -d -P nginx:test1885cf9811be57e12690ce352fbd7c5011cefffece8b59a0d7317e12eb8955a70[root@docker nginx]# docker ps -aCONTAINER ID IMAGECOMMAND CREATED STATUS PORTS NAMESe34b0521147c 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:test1885cf9811be57e12690ce352fbd7c5011cefffece8b59a0d7317e12eb8955a70[root@docker nginx]# docker ps -aCONTAINER ID IMAGECOMMAND CREATED STATUS PORTS NAMESe34b0521147c 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 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:68:b8:a6 brd ff:ff:ff:ff:ff:ffinet 192.168.233.133/24 brd 192.168.233.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 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 DockerfileFROM centosMAINTAINER this is tomcatADD jdk-8u201-linux-x64.rpm /usr/local/WORKDIR /usr/local/RUN rpm -ivh jdk-8u201-linux-x64.rpmENV JAVA_HOME /usr/java/jdk1.8.0_201-amd64ENV CLASSPATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarENV PATH $JAVA_HOME/bin:$PATHADD apache-tomcat-9.0.16.tar.gz /usr/localWORKDIR /usr/localRUN mv apache-tomcat-9.0.16/ /usr/local/tomcat9ENV PATH /usr/local/tomcat9/bin/:$PATHEXPOSE 8080ENTRYPOINT ["/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 tomcatf4afd19d14d3 tomcat:test1 "/usr/local/src/tomc…" 25 seconds agoUp 23 seconds 0.0.0.0:32788->22/tcp, 0.0.0.0:32787->8080/tcplucid_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/f#删除原来的/etc/f文件ADD f /etc#将宿主机的f文件添加到/etc/目录下面RUN chown mysql:mysql /etc/f#设置权限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 f[root@localhost mysql-5.7.20]#vi /etc/f[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_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/bashgrant 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';

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。