设为首页 收藏本站
查看: 877|回复: 0

[经验分享] 制作tomcat的docker镜像

[复制链接]

尚未签到

发表于 2018-5-27 07:26:26 | 显示全部楼层 |阅读模式
制作tomcat的docker镜像
一 commit制作tomcatdocker镜像
1 centos下安装docker
      yum -y install docker
   启动docker
      systemctl start docker
   设置开机启动
systemctl start docker

2 安装centos镜像
查找centos镜像
docker search centos
拉取centos镜像
docker pull centos
查看cenots镜像
docker images


3 进入centos容器配置ssh
3.1进入centos容器
  docker run  -i -t centos  /bin/bash
3.2安装网络工具
  yum -y install net-tools
  
3.3安装passwd,openssl,openssh-server
  [root@b5926410fe60 /]# yum install passwd openssl openssh-server -y
  
  启动sshd:
  # /usr/sbin/sshd -D   //直接/usr/sbin/sshd启动也可以
  这时报以下错误:
  [root@ b5926410fe60 /]# /usr/sbin/sshd
  Could not load host key: /etc/ssh/ssh_host_rsa_key
  Could not load host key: /etc/ssh/ssh_host_ecdsa_key
  Could not load host key: /etc/ssh/ssh_host_ed25519_key
  
  
  执行以下命令解决:
  [root@b5926410fe60 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''  
  [root@b5926410fe60 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
  [root@b5926410fe60 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
  
  然后,修改 /etc/ssh/sshd_config 配置信息:
  UsePAM yes 改为 UsePAM no
  UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no
  
  [root@b5926410fe60 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
  [root@b5926410fe60 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
  
  修改完后,重新启动sshd
  [root@b5926410fe60 /]# /usr/sbin/sshd
  可以查看到22端口已经起来
  [root@597847f19876 /]# netstat -tulnp|grep 22
  tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      90/sshd            
  tcp6       0      0 :::22                   :::*                    LISTEN      90/sshd     
  
  
3.4修改root 密码
   [root@b5926410fe60 /]# passwd root
  四. 查看容器ip地址(如果宿主机是linux操作系统则跳过这一步)
  [root@b5926410fe60 /]# ip addr ls eth0
  84: eth0@if85: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
      valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link
valid_lft forever preferred_lft forever
  
  
3.5保存当前的镜像,退出会恢复初始状态
  
  [root@slave1 ~]# docker ps -all
  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
  597847f19876        centos              &quot;/bin/bash&quot;         17 minutes ago      Up 16 minutes                           suspicious_mccarthy
  [root@slave1 ~]# docker commit 597847f19876 zhuzhou/centos-1
  sha256:8bb2fccf7a1e08a8b3fa30ef6120ae401673180768260336e433a1d00b8c3029
  [root@slave1 ~]# docker ps -all
  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
  597847f19876        centos              &quot;/bin/bash&quot;         17 minutes ago      Up 17 minutes                           suspicious_mccarthy
  [root@slave1 ~]# docker images
  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
  zhuzhou/centos-1    latest              8bb2fccf7a1e        10 seconds ago      280.4 MB
  docker.io/centos    latest              196e0ce0c9fb        7 weeks ago         196.6 MB
  
4进入容器部署应用
4.1 退出容器,在设置端口映射进入系统
  
  [root@slave1 ~]# docker run  -i -t  -p 32:22  centos  /bin/bash
  [root@0a186c0ffe7d /]# exit
  exit
  [root@slave1 ~]#
  [root@slave1 ~]#
  [root@slave1 ~]# docker run  -i -t  -p 32:22  zhuzhou/centos-1  /bin/bash
  [root@26a868e6496e /]#
  [root@741c0bf053d6 /]# /usr/sbin/sshd
  WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several problems.
  [root@741c0bf053d6 /]#
  
  
4.2文件传输到centos容器中
  
  (1) 可以通过xshell工具直接连上本机ip32端口,可以通过sftp工具直接传输文件到容器内。



  
  
  (2)通过cp命令将宿主机传送到容器中
  
  [root@slave1 home]# docker ps -all
  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
  741c0bf053d6        zhuzhou/centos-1    &quot;/bin/bash&quot;         8 minutes ago       Up 8 minutes        0.0.0.0:32->22/tcp   romantic_bassi
  [root@slave1 home]# docker cp /home/hadoop
  hadoop/                     hadoop-3.0.0-alpha4/        hadoop-3.0.0-alpha4.tar.gz  
  [root@slave1 home]# docker cp /home/hadoop-3.0.0-alpha4.tar.gz   741c0bf053d6:/home/
  [root@slave1 home]#
  
  
4.3在宿主机中配置Java环境和解压tomcat
  
4.4 保存当前的镜像
  [root@slave1 home]# docker ps -all
  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
  741c0bf053d6        zhuzhou/centos-1    &quot;/bin/bash&quot;         17 minutes ago      Up 17 minutes       0.0.0.0:32->22/tcp   romantic_bassi
  [root@slave1 home]# docker commit 741c0bf053d6  zhuzhou/centos-tomcat
  sha256:70a6934fbd03fb95dda31e8acf240c07ef8a0aed39853a9e582e34e7ee7ddded
  [root@slave1 home]# docker images
  REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
  zhuzhou/centos-tomcat   latest              70a6934fbd03        6 seconds ago       1.067 GB
  zhuzhou/centos-1        latest              8bb2fccf7a1e        25 minutes ago      280.4 MB
  docker.io/centos        latest              196e0ce0c9fb        7 weeks ago         196.6 MB
  
  
  
  
4.5 启动docker后台运行
  [root@slave1 ~]# docker run  -d -p 8080:8080 -p 32:22 zhuzhou/centos-tomcat  /usr/sbin/sshd -D
  435a824136e5820c56fa86d78d1131495191a4c01330671cf546a8660b315062
  [root@slave1 ~]# docker ps -all
  CONTAINER ID        IMAGE                   COMMAND               CREATED             STATUS              PORTS                                        NAMES
  435a824136e5        zhuzhou/centos-tomcat   &quot;/usr/sbin/sshd -D&quot;   7 seconds ago       Up 6 seconds        0.0.0.0:8080->8080/tcp, 0.0.0.0:32->22/tcp   fervent_euclid
  [root@slave1 ~]#
  
5 保存镜像
  [root@slave1 ~]# docker save -o /home/docker-centos-tomcat.tar  zhuzhou/centos-tomcat
  [root@slave1 ~]# cd /home/
  [root@slave1 home]# ls
  docker-centos-tomcat.tar  hadoop  hadoop-3.0.0-alpha4  hadoop-3.0.0-alpha4.tar.gz  jdk-8u101-linux-x64.rpm  joe
  [root@slave1 home]#
  
6 导入镜像到另一个系统中
  [root@slave2 home]# docker load -i docker-centos-tomcat.tar
  cf516324493c: Loading layer 205.2 MB/205.2 MB
  d849bfac7f38: Loading layer 84.08 MB/84.08 MB
  5c0e5e62d633: Loading layer 789.3 MB/789.3 MB
  Loaded image: zhuzhou/centos-tomcat:latest MB
  [root@slave2 home]# docker images
  REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
  zhuzhou/centos-tomcat   latest              70a6934fbd03        About an hour ago   1.067 GB
  
  
Dockerfile文件制作tomcat的docker镜像
1 编写Dockerfile文件
  [root@slave1 docker-build]# cd /home/docker-build/
  [root@slave1 docker-build]# ls
  apache-tomcat-7.0.79  apache-tomcat-7.0.79.tar.gz  jdk1.7.0_80  jdk-7u80-linux-x64.tar.gz
  [root@slave1 docker-build]# vi Dockerfile
  
  FROM         centos
  MAINTAINER    linux
  
  #指定RUNCMDENTRYPOINT命令的工作目录
  WORKDIR /home  
  
  #安装网络工具和ssh
  RUN yum -y install net-tools
  
  
  #把javatomcat添加到容器中
  ADD  apache-tomcat-7.0.79.tar.gz   /home
  ADD  jdk-7u80-linux-x64.tar.gz     /home
  
  #安装jdktomcat,实际测试中加下面两个解压语句会报错, ADD 自带解压功能,docker会自动进行解压
  #RUN tar -xzvf apache-tomcat-7.0.79.tar.gz
  #RUN tar -xzvf  jdk-7u80-linux-x64.tar.gz
  
  #配置环境
  ENV JAVA_HOME /home/jdk1.7.0_80
  ENV CLASS_PATH $JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
  ENV PATH $PATH:$JAVA_HOME/bin
  #设置tomcat 自启动,测试tomcat没有起来
  CMD /home/apache-tomcat-7.0.79/bin/startup.sh
  #容器运行时监听的端口
  EXPOSE  8080



2 创建镜像
  
  docker build -t  zhuzhou/centos-tomcat-2  .   
注:如果要ADD本地文件,则本地文件必须在 docker build <PATH>,指定的<PATH>目录下。


  
注:个人建议采用第一种方式,简单直接
  


  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481565-1-1.html 上篇帖子: 初探 ELK 下篇帖子: ELK 完整部署和使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表