gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

基于Dockerfile構建Nginx、Tomcat、MySQL鏡像(含包源)

前言

?上篇文章講述了有關Dockerfile的理論,以及演示了通過其構建的三個鏡像服務httpd、sshd以及systemd。本文將結合先前的shell編程與當下的Dockerfile來給出基于Dockerfile構建Nginx、Tomcat以及MySQL模板。

  • 揭開Docker的面紗 – 基礎理論梳理和安裝流程演示  http://www.gmnon.cn/Linux/2020-04/163003.htm
  • Docker基礎命令詳解 – 鏡像及容器操作  http://www.gmnon.cn/Linux/2020-04/163005.htm
  • 深入理解Docker的硬件資源控制與驗證  http://www.gmnon.cn/Linux/2020-04/163006.htm
  • Docker網絡模式與配置Docker自定義網絡(bridge模式)  http://www.gmnon.cn/Linux/2020-04/163007.htm
  • Docker構建鏡像的三種方式(Dockerfile初步)  http://www.gmnon.cn/Linux/2020-04/163008.htm
  • 教你如何搭建Docker私有倉庫  http://www.gmnon.cn/Linux/2020-04/163009.htm
  • 深入理解Docker數據管理與端口映射  http://www.gmnon.cn/Linux/2020-04/163010.htm
  • Dockerfile與Dockerfile實戰  http://www.gmnon.cn/Linux/2020-04/163011.htm

? 由于時間和篇幅問題,本文將省略build的過程。其中Nginx的構建將基于wget命令從網上下載,后兩者將使用本地已有的軟件包。

? 這樣的目的一方面是演示多種方式,以及對兩種方式的區別,另一方面則是效率問題,從網上獲取一般收到影響較大(這個體會將在您build的時候感受出來)。

? 好了,下面直接給出對應的Dockerfile和相關文件吧。

?先給出軟件包鏈接:

鏈接: https://pan.baidu.com/s/1teUc4kqzLH1kZS7Vu3znaQ

關注Linux公社微信公眾號(linuxidc_com),(見http://www.gmnon.cn/Linux/2013-12/93755.htm),在Linux公社微信公眾號后臺發送發送“163012”即可獲得。

基于Dockerfile的Nginx鏡像構建

目錄結構

[root@localhost nginx]# tree ./  ./  ├── Dockerfile  └── nginx.sh    0 directories, 2 files  

Dockerfile以及其他文件

#基于dockerfile構建nginx鏡像 #設置基礎鏡像  FROM CentOS:7  #維護該鏡像的用戶信息  MAINTAINER lokott@123.com  #指令集 #更新及安裝相關工具  RUN yum update -y  RUN yum install -y wget lsof telnet net-tools gcc gcc-c++ make pcre pcre-devel zlib zlib-devel  #從官網上下載nginx軟件包源并解壓  RUN wget http://nginx.org/download/nginx-1.16.1.tar.gz  RUN tar zxf nginx-1.16.1.tar.gz  #創建nginx用戶  RUN useradd -M -s /sbin/nologin nginx  #指定后續RUN指令的工作目錄  WORKDIR nginx-1.16.1  #配置參數以及編譯nginx  RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module  RUN make && make install  #ENV PATH /usr/local/nginx/sbin:$PATH #端口設置  EXPOSE 80  EXPOSE 443  #以非daemon方式運行  RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf  #切換工作目錄  WORKDIR /root/nginx  ADD nginx.sh /nginx.sh  RUN chmod 755 /nginx.sh  #啟動容器執行指令  CMD ["/nginx.sh"]  

shell腳本文件

[root@localhost nginx]# cat nginx.sh   #!/bin/bash  /usr/local/nginx/sbin/nginx  

對比手工編譯的shell腳本是不是非常類似呢?其中需要注意的有兩點:

1、從網上下載需要安裝wget工具進行軟件包下載并且需要執行tar命令解壓,而本地有軟件包則會自動解壓(看下面兩個服務構建鏡像過程就可以理解了)

2、nginx通過服務是需要關閉后臺運行,否則一直會無法正常運行容器

構建及運行

[root@localhost nginx]# docker build -t nginx:centos .  [root@localhost nginx]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  [root@localhost nginx]# docker run -d -P nginx:centos   3d4c431bf95feded1928268a4237768ca7ed2b362ef3cf582cab7e9d49cc4669  [root@localhost nginx]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                           NAMES  3d4c431bf95f        nginx:centos        "/nginx.sh"         4 seconds ago       Up 3 seconds        0.0.0.0:32772->80/tcp, 0.0.0.0:32771->443/tcp   distracted_mclean  

測試:瀏覽器訪問ip:32772 此時不能訪問32771,因為涉及到ssl證書及其他服務

基于Dockerfile構建Nginx、Tomcat、MySQL鏡像(含包源)

基于Dockerfile的Tomcat鏡像構建

目錄結構

[root@localhost tomcat]# tree .  .  ├── apache-tomcat-9.0.16.tar.gz  ├── Dockerfile  └── jdk-8u91-linux-x64.tar.gz    0 directories, 3 files

Dockerfile文件

FROM centos:7  MAINTAINER this is tomcat  ADD jdk-8u91-linux-x64.tar.gz /usr/local  WORKDIR /usr/local  RUN mv jdk1.8.0_91 /usr/local/Java  ENV JAVA_HOME /usr/local/java  ENV JAVA_BIN /usr/local/java/bin  ENV JRE_HOME /usr/local/java/jre  ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin  ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar  ADD apache-tomcat-9.0.16.tar.gz /usr/local  WORKDIR /usr/local  RUN mv apache-tomcat-9.0.16 /usr/local/tomcat8  EXPOSE 8080  ENTRYPOINT ["/usr/local/tomcat8/bin/catalina.sh","run"]  

構建及運行

[root@localhost tomcat]# docker build -t tomcat:centos .  [root@localhost tomcat]# docker run -d -P tomcat:centos   c8a2e5524af1bf74dd1677d85f45db8e7d4715f97acac1298227cf0fc1092f46  [root@localhost tomcat]# docker ps -a  CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                           NAMES  c8a2e5524af1        tomcat:centos       "/usr/local/tomcat8/…"   5 seconds ago       Up 4 seconds        0.0.0.0:32773->8080/tcp                         xenodochial_yalow  

測試

基于Dockerfile構建Nginx、Tomcat、MySQL鏡像(含包源)

基于Dockerfile的MySQL鏡像構建

目錄結構

[root@localhost mysql5.7]# tree .  .  ├── Dockerfile  ├── my.cnf  └── mysql-boost-5.7.20.tar.gz    0 directories, 3 files  

Dockerfile及其他文件

[root@localhost mysql5.7]# cat Dockerfile

  #基于基礎鏡像  FROM centos:7  #維護該鏡像的用戶信息  MAINTAINER lokott@123.com  #指令集  #下載相關工具  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  #指定工作目錄  WORKDIR /usr/local/src/mysql-5.7.20/  #cmake配置及編譯安裝  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  #更改mysql目錄屬主屬組  RUN chown -R mysql:mysql /usr/local/mysql/  #刪除默認安裝的my.cnf文件  RUN rm -rf /etc/my.cnf  #復制一份my.cnf到etc目錄下  ADD my.cnf /etc  #更改該文件權限  RUN chown mysql:mysql /etc/my.cnf  #設置環境變量,命令目錄及庫文件目錄  ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH  #指定工作目錄  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/  EXPOSE 3306  #直接設置運行啟動腳本  RUN echo -e "#!/bin/sh nsystemctl enable mysqld" > /run.sh  RUN chmod 755 /run.sh  RUN sh /run.sh  #啟動容器時執行  CMD ["init"]  

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  

構建及運行

[root@localhost mysql5.7]# docker build -t mysql:latest .  ...//友情提示MySQL5.7時間比較長  [root@localhost mysql5.7]# docker run --name mysql_new -d -P --privileged mysql:latest   e9c9f93766d149a3387aed4cb5e04425269a884fccf06256b087d00e4c262222  [root@localhost mysql5.7]# docker ps -a  CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                           NAMES  e9c9f93766d1        mysql:latest        "init"                   6 seconds ago       Up 5 seconds        0.0.0.0:32774->3306/tcp  

進入MySQL服務的容器中進行提權操作

[root@localhost mysql5.7]# docker exec -it mysql_new /bin/bash  [root@e9c9f93766d1 mysql]# mysql  Welcome to the MySQL monitor.  Commands end with ; or g.  Your MySQL connection id is 3  Server version: 5.7.20 Source distribution    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.    Oracle is a registered trademark of Oracle Corporation and/or its  affiliates. Other names may be trademarks of their respective  owners.    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.    mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';  Query OK, 0 rows affected, 1 warning (0.00 sec)    mysql>  flush privileges;  Query OK, 0 rows affected (0.01 sec)    mysql> exit  Bye  [root@e9c9f93766d1 mysql]# exit  exit  

宿主機系統安裝mariadb服務來測試

[root@localhost mysql5.7]# yum install mariadb -y  [root@localhost mysql5.7]# mysql -h 20.0.0.149 -P 32774 -uroot -p123456  Welcome to the MariaDB monitor.  Commands end with ; or g.  Your MySQL connection id is 4  Server version: 5.7.20 Source distribution    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.    MySQL [(none)]> show databases;  +--------------------+  | Database           |  +--------------------+  | information_schema |  | mysql              |  | performance_schema |  | sys                |  +--------------------+  4 rows in set (0.01 sec)  #創建一個數據庫,退出后再次然后進入容器查看  MySQL [(none)]> create database mydb;  Query OK, 1 row affected (0.00 sec)    MySQL [(none)]> exit  Bye    [root@localhost mysql5.7]# docker exec -it mysql_new /bin/bash  [root@e9c9f93766d1 mysql]# mysql  Welcome to the MySQL monitor.  Commands end with ; or g.  Your MySQL connection id is 5  Server version: 5.7.20 Source distribution    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.    Oracle is a registered trademark of Oracle Corporation and/or its  affiliates. Other names may be trademarks of their respective  owners.    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.    mysql> show databases;  +--------------------+  | Database           |  +--------------------+  | information_schema |  | mydb               |  | mysql              |  | performance_schema |  | sys                |  +--------------------+  5 rows in set (0.00 sec)    mysql> exit  Bye  [root@e9c9f93766d1 mysql]# exit  exit  [root@localhost mysql5.7]#   

小結

基于Dockerfile構建這三個服務的鏡像案例就說到這里,當然在工程中一般不會將MySQL服務放在容器中運行,而是會單獨使用服務器部署提供服務(搭建高可用集群架構),本文主要是提供基于Dockerfile構建編寫這些服務的案例。

需要注意兩點:在Dockerfile中什么時候使用tar命令;權限問題

謝謝閱讀!

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
亚洲 欧美 日韩系列| 亚洲熟妇无码一区二区三区| 免费在线观看视频a| 五月天色婷婷综合| 国产日韩av网站| 免费一区二区三区在线观看| 免费观看中文字幕| 国产成人无码一二三区视频| 九九久久久久久| 熟妇人妻va精品中文字幕 | 国产片侵犯亲女视频播放| 波多野结衣综合网| 男女激情无遮挡| 欧美少妇在线观看| 中文字幕22页| 久久免费一级片| 91午夜在线观看| 国产尤物av一区二区三区| 亚洲理论电影在线观看| 成人三级视频在线播放| 99中文字幕在线| www.浪潮av.com| 精品人妻人人做人人爽| 成人综合视频在线| 久久久精品视频国产| 国产福利影院在线观看| 欧美精品99久久| 欧美激情第四页| 黄色免费视频大全| 裸体大乳女做爰69| 视色视频在线观看| 美女网站免费观看视频| 爱爱爱视频网站| 亚洲成熟丰满熟妇高潮xxxxx| 天天干天天色天天爽| 91av俱乐部| 香港三级韩国三级日本三级| 中文字幕一区二区三区四| 成人在线免费在线观看| 女同性恋一区二区| 亚洲国产成人va在线观看麻豆| 国产av人人夜夜澡人人爽麻豆| 亚洲天堂av一区二区三区| 91蝌蚪视频在线观看| 人妻夜夜添夜夜无码av| 国产911在线观看| 欧美成年人视频在线观看| 欧美国产综合在线| 婷婷视频在线播放| 天天综合天天添夜夜添狠狠添| 亚洲一二区在线观看| 天天色综合天天色| 嫩草av久久伊人妇女超级a| 国内自拍在线观看| 男的插女的下面视频| 欧洲精品在线播放| 蜜臀精品一区二区| 3d动漫一区二区三区| 久久精品视频16| 波多野结衣之无限发射| 成 年 人 黄 色 大 片大 全| 国产免费观看高清视频| av免费播放网址| 日韩a一级欧美一级| 亚洲天堂2018av| 中文字幕制服丝袜在线| 免费观看国产视频在线| 欧美亚洲黄色片| 久久国产成人精品国产成人亚洲| 国产极品尤物在线| 欧美精品性生活| 中文字幕一区二区在线观看视频| 日韩a一级欧美一级| 日本免费a视频| 91视频最新入口| 亚洲天堂2018av| 国产 国语对白 露脸| 免费在线a视频| 欧美成人乱码一二三四区免费| 一本二本三本亚洲码| 日韩免费视频播放| 黑人粗进入欧美aaaaa| 992tv人人草| 欧美日本视频在线观看| 久久久久久久久久久久久久久国产| 午夜在线视频免费观看| 青青青在线观看视频| 在线免费观看视频黄| 欧美日韩dvd| 少妇一级淫免费放| 亚洲色婷婷久久精品av蜜桃| 男人的天堂99| 国产性生活免费视频| 欧美视频免费播放| www.国产亚洲| 国内外成人免费在线视频| 日韩黄色短视频| 丰满女人性猛交| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 国产一二三区av| 大陆极品少妇内射aaaaaa| 国产成人综合一区| 免费人成自慰网站| 亚洲高清av一区二区三区| 国产一级不卡毛片| www国产黄色| 亚洲理论电影在线观看| 偷拍盗摄高潮叫床对白清晰| 女性隐私黄www网站视频| 97超碰国产精品| 黄黄视频在线观看| 中文字幕55页| 成人亚洲免费视频| 在线观看亚洲色图| av免费网站观看| 久久久久久久少妇| 国产无套内射久久久国产| 国产黄页在线观看| 91免费黄视频| 日韩视频在线视频| 波多野结衣综合网| 国产精品国产对白熟妇| www.av片| 免费午夜视频在线观看| aaa毛片在线观看| av污在线观看| 永久免费黄色片| 日本男女交配视频| 岛国大片在线播放| 乱人伦xxxx国语对白| 北条麻妃69av| 香蕉视频禁止18| 亚洲欧美国产中文| 性鲍视频在线观看| 国产免费一区二区视频| 黄色免费福利视频| 久久综合久久色| 亚洲怡红院在线| 9l视频自拍9l视频自拍| 久久这里只有精品18| 99精品人妻少妇一区二区| 狠狠操精品视频| 91xxx视频| 成年人视频网站免费观看| 人人干人人干人人| 欧美一区二区三区综合| 丝袜老师办公室里做好紧好爽| 大香煮伊手机一区| 麻豆视频传媒入口| 亚洲性生活网站| 国产 国语对白 露脸| 中文字幕乱码人妻综合二区三区 | 亚洲高清在线不卡| 精品视频免费在线播放| 在线看的黄色网址| 91网站在线观看免费| 丁香婷婷激情网| www.av毛片| 日本高清久久久| 日韩免费毛片视频| 妞干网视频在线观看| 手机看片一级片| 777精品久无码人妻蜜桃| 亚洲制服在线观看| 女人另类性混交zo| 日韩日韩日韩日韩日韩| 中文字幕亚洲影院| 国产成人久久婷婷精品流白浆| 九九久久九九久久| 欧美成人乱码一二三四区免费| 久久久久久久久久久视频| 日韩国产小视频| 免费在线观看污污视频| 国产小视频精品| 欧美视频第三页| 韩日视频在线观看| 最近中文字幕免费mv| www.国产福利| 小明看看成人免费视频| 日韩中文字幕组| 欧美精品第三页| 久草在在线视频| 日韩福利视频在线| 韩国日本美国免费毛片| 国产精品秘入口18禁麻豆免会员| 91大学生片黄在线观看| 7777在线视频| xxxxxx在线观看| 日本黄大片在线观看| 国产精品久久国产| 精品国产一区三区| 国产资源在线视频| 999香蕉视频| 91插插插插插插插插| 看看黄色一级片| 国产成人精品免费看在线播放| 爽爽爽在线观看| 四虎4hu永久免费入口| 国产一二三区在线播放| 亚洲熟妇av日韩熟妇在线 |