赵小黑 发表于 2018-12-2 10:15:00

制作tomcat的docker镜像

制作tomcat的docker镜像
一 commit制作tomcat的docker镜像
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
  # yum install passwd openssl openssh-server -y
  
  启动sshd:
  # /usr/sbin/sshd -D   //直接/usr/sbin/sshd启动也可以
  这时报以下错误:
  # /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
  
  
  执行以下命令解决:
  # ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
  # ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
  # ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
  
  然后,修改 /etc/ssh/sshd_config 配置信息:
  UsePAM yes 改为 UsePAM no
  UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no
  
  # sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
  # sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
  
  修改完后,重新启动sshd
  # /usr/sbin/sshd
  可以查看到22端口已经起来
  # 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 密码
   # passwd root
  四. 查看容器ip地址(如果宿主机是linux操作系统则跳过这一步)
  # ip addr ls eth0
  84: eth0@if85: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保存当前的镜像,退出会恢复初始状态
  
  # docker ps -all
  CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS            PORTS               NAMES
  597847f19876      centos            "/bin/bash"         17 minutes ago      Up 16 minutes                           suspicious_mccarthy
  # docker commit 597847f19876 zhuzhou/centos-1
  sha256:8bb2fccf7a1e08a8b3fa30ef6120ae401673180768260336e433a1d00b8c3029
  # docker ps -all
  CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS            PORTS               NAMES
  597847f19876      centos            "/bin/bash"         17 minutes ago      Up 17 minutes                           suspicious_mccarthy
  # 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 退出容器,在设置端口映射进入系统
  
  # docker run-i -t-p 32:22centos/bin/bash
  # exit
  exit
  #
  #
  # docker run-i -t-p 32:22zhuzhou/centos-1/bin/bash
  #
  # /usr/sbin/sshd
  WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several problems.
  #
  
  
4.2文件传输到centos容器中
  
  (1) 可以通过xshell工具直接连上本机ip:32端口,可以通过sftp工具直接传输文件到容器内。



  
  
  (2)通过cp命令将宿主机传送到容器中
  
  # docker ps -all
  CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS            PORTS                NAMES
  741c0bf053d6      zhuzhou/centos-1    "/bin/bash"         8 minutes ago       Up 8 minutes      0.0.0.0:32->22/tcp   romantic_bassi
  # docker cp /home/hadoop
  hadoop/                     hadoop-3.0.0-alpha4/      hadoop-3.0.0-alpha4.tar.gz
  # docker cp /home/hadoop-3.0.0-alpha4.tar.gz   741c0bf053d6:/home/
  #
  
  
4.3在宿主机中配置Java环境和解压tomcat
  
4.4 保存当前的镜像
  # docker ps -all
  CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS            PORTS                NAMES
  741c0bf053d6      zhuzhou/centos-1    "/bin/bash"         17 minutes ago      Up 17 minutes       0.0.0.0:32->22/tcp   romantic_bassi
  # docker commit 741c0bf053d6zhuzhou/centos-tomcat
  sha256:70a6934fbd03fb95dda31e8acf240c07ef8a0aed39853a9e582e34e7ee7ddded
  # 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后台运行
  # docker run-d -p 8080:8080 -p 32:22 zhuzhou/centos-tomcat/usr/sbin/sshd -D
  435a824136e5820c56fa86d78d1131495191a4c01330671cf546a8660b315062
  # docker ps -all
  CONTAINER ID      IMAGE                   COMMAND               CREATED             STATUS            PORTS                                        NAMES
  435a824136e5      zhuzhou/centos-tomcat   "/usr/sbin/sshd -D"   7 seconds ago       Up 6 seconds      0.0.0.0:8080->8080/tcp, 0.0.0.0:32->22/tcp   fervent_euclid
  #
  
5 保存镜像
  # docker save -o /home/docker-centos-tomcat.tarzhuzhou/centos-tomcat
  # cd /home/
  # ls
  docker-centos-tomcat.tarhadoophadoop-3.0.0-alpha4hadoop-3.0.0-alpha4.tar.gzjdk-8u101-linux-x64.rpmjoe
  #
  
6 导入镜像到另一个系统中
  # 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
  # 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文件
  # cd /home/docker-build/
  # ls
  apache-tomcat-7.0.79apache-tomcat-7.0.79.tar.gzjdk1.7.0_80jdk-7u80-linux-x64.tar.gz
  # vi Dockerfile
  
  FROM         centos
  MAINTAINER    linux
  
  #指定RUN、CMD与ENTRYPOINT命令的工作目录
  WORKDIR /home
  
  #安装网络工具和ssh
  RUN yum -y install net-tools
  
  
  #把java与tomcat添加到容器中
  ADDapache-tomcat-7.0.79.tar.gz   /home
  ADDjdk-7u80-linux-x64.tar.gz   /home
  
  #安装jdk和tomcat,实际测试中加下面两个解压语句会报错, ADD 自带解压功能,docker会自动进行解压
  #RUN tar -xzvf apache-tomcat-7.0.79.tar.gz
  #RUN tar -xzvfjdk-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
  #容器运行时监听的端口
  EXPOSE8080



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


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


  
  



页: [1]
查看完整版本: 制作tomcat的docker镜像