docker搭建web运行环境

本文目的

做过开发的人对开发环境的安装、配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的。比如你是Java开发人员,开发了一个网站,你可能需要一个Linux系统、配置jdk运行环境、Web 服务器(如 Apache、Nginx)、一个数据库服务器(如 MySQL)。虽然说这些东西作为一名合格的程序猿是必须要会的,但是如果叫你经常帮忙安装配置这些环境,你也会不爽吧,毕竟配置这些也是毕竟费时间的,而且容易出错。
但是自从有了 Docker 之后,妈妈再也不用担心我的开发环境的问题了。使用 Docker ,开发环境只需要安装配置一次,之后搭建相同的开发环境很简单,只需要一条命令即可完成!

前提条件

首先,您要准备一个 CentOS或者Ubuntu 的操作系统,虚拟机也行。这些都不重要,因为只要你的linux系统能安装docker,大部分的运行环境需要用到的软件都可以通过docker安装,包括操作系统。
需要说明的是,我本机是win10,然后在win10上安装了个VMware,VMware里安装了ubuntu18,最后在ubuntu18中安装docker的。

安装docker

如果还没安装docker,可以参考https://blog.csdn.net/wuzhangweiss/article/details/88895570

获取centos镜像

通过docker search cento查询docker官方仓库中有哪些镜像。

wuzhangwei@ubuntu:~$ docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   5404                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              121                                     [OK]
jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86…   110                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   91                                      [OK]
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              56                                      [OK]
tutum/centos                       Simple CentOS docker image with SSH access      44                                      
centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relational …   37                                      
kinogmt/centos-ssh                 CentOS with SSH                                 26                                      [OK]
centos/php-56-centos7              Platform for building and running PHP 5.6 ap…   20                                      
pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag names…   10                                      
nathonfowlie/centos-jre            Latest CentOS image with the JRE pre-install…   8                                       [OK]
drecom/centos-ruby                 centos ruby                                     6                                       [OK]
pivotaldata/centos                 Base centos, freshened up a little with a Do…   3                                       
darksheer/centos                   Base Centos Image -- Updated hourly             3                                       [OK]
miko2u/centos6                     CentOS6 日本語環境                                   2                                       [OK]
pivotaldata/centos-mingw           Using the mingw toolchain to cross-compile t…   2                                       
ovirtguestagent/centos7-atomic     The oVirt Guest Agent for Centos 7 Atomic Ho…   2                                       
pivotaldata/centos-gcc-toolchain   CentOS with a toolchain, but unaffiliated wi…   1                                       
blacklabelops/centos               CentOS Base Image! Built and Updates Daily!     1                                       [OK]
indigo/centos-maven                Vanilla CentOS 7 with Oracle Java Developmen…   1                                       [OK]
mcnaughton/centos-base             centos base image                               1                                       [OK]
pivotaldata/centos7-dev            CentosOS 7 image for GPDB development           0                                       
smartentry/centos                  centos with smartentry                          0                                       [OK]
fortinj66/centos7-s2i-nodejs       based off of ryanj/centos7-s2i-nodejs.  Bigg…   0                                       
pivotaldata/centos6.8-dev          CentosOS 6.8 image for GPDB development         0                                       

上面是我查到的所有centos镜像,其中第一个是docker官方上传的centos镜像,剩下的都是个人用户上传上去的。
下载第一个镜像:docker pull centos,然后等待下载完成。
下载完成后可以通过docker images查看自己本地仓库的镜像。

wuzhangwei@ubuntu:~$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
wuzhangwei/javaweb   1.0                 5419a4a8f597        40 hours ago        540MB
mysql                latest              990386cbd5c0        5 weeks ago         443MB
redis                latest              a55fbf438dfd        2 months ago        95MB
centos               latest              9f38484d220f        3 months ago        202MB
nginx                latest              881bd08c0b08        3 months ago        109MB
hello-world          latest              fce289e99eb9        5 months ago        1.84kB

如上面所示,centos已经下载到本地镜像库了。

REPOSITORY :仓库名称
TAG : 镜像标签
IMAGE ID : 镜像ID
CREATED : 创建时间
SIZE : 大小
下载的centos镜像ID为:======9f38484d220f ======

启动容器

容器是基于镜像创建的,执行镜像生成容器,方可进入容器
启动容器命令: docker run <相关参数> <镜像 ID> <初始命令>

wuzhangwei@ubuntu:~$ docker run -it -v /mnt/software/:/mnt/software/ 9f38 /bin/bash
[root@4c415c247478 /]# 

参数解析
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
/bin/bash:一旦容器启动,需要执行的命令,当前使用 “/bin/bash”, 表示启动后直接进bash shell
9f38是centos镜像的ID:9f38484d220f的前四位(可以写全也可以只写前几位)
tips:这里挂载的意思就是 9f38484d220f创建的容器访问 /mnt/software/ 目录下的文件就相当于访问 宿主机的 /mnt/software/下的文件,且两者文件夹里内容相同

查看运行中的容器

wuzhangwei@ubuntu:/$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
4c415c247478        9f38                "/bin/bash"         About a minute ago   Up About a minute                       quirky_cori

拷贝JDK和tomcat安装包到宿主机器

因为前面启动的centos容器挂载到了/mnt/software/路径下,所以现在需要把jdk和tomcat拷贝到到宿主机器的/mnt/software/路径下。
这里推荐使用MobaXterm这款ssh客户端神器来操作,这款工具免费又好用。
拷贝好后如下所示,jdk和tomcat都放到了/mnt/software/路径下了

wuzhangwei@ubuntu:~$ cd /mnt/software
wuzhangwei@ubuntu:/mnt/software$ ls
apache-tomcat-8.5.35.tar.gz  jdk8-linux-x64.tar.gz 

进入centos容器配置运行环境

安装jdk

[root@4c415c247478 software]#  tar -zxf jdk8-linux-x64.tar.gz -C .

移动jdk1.8.0_11到/opt/路径下并重命名jdk目录

[root@4c415c247478 software]#  mv jdk1.8.0_11/ /opt/jdk

安装tomcat

[root@4c415c247478 software]#  tar -zxf apache-tomcat-8.5.35.tar.gz -C .

移动apache-tomcat-8.5.35到/opt/路径下并重命名tomcat目录

[root@4c415c247478 software]#  mv apache-tomcat-8.5.35/ /opt/tomcat

设置环境变量

首先,编辑.bashrc文件

[root@4c415c247478 software]# vi ~/.bashrc

在末尾处添加下面三行配置

export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

使配置立即生效

source ~/.bashrc

检查jdk是否安装成功

[root@4c415c247478 conf]# java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)

编写运行脚本

我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:

首先,创建运行脚本:

[root@4c415c247478 conf]# vi /root/run.sh

然后编辑脚本内容如下

#!/bin/bash
source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run

注意:这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务。

最后,为运行脚本添加执行权限:

[root@4c415c247478 conf]# chmod u+x /root/run.sh

退出容器

当以上步骤全部完成后,可使用exit命令,退出容器。

创建tomcat镜像

使用docker构建镜像有两种方式
1、使用docker commit 命令,更直观一些
2、使用docker build命令和dockerfile文件,可以模板化构建过程;

这里使用docker commit命令

回顾一下,我们是用了centos镜像,运行,生成了一个容器,然后再容器里面安装了 jdk 和tomcat ,这个时候我们可以根据之前安装好环境的容器ID 创建一个镜像

执行 docker commit 4c415c247478 wuzhangwei/mytomcat:1.0 后
然后查看本地镜像库,可以看见刚刚新增的镜像;

wuzhangwei@ubuntu:~$ docker commit 4c415c247478 wuzhangwei/mytomcat:1.0
sha256:cc2bd2cf28090e8077f7d21d8119b11baa4a6ede18161f0259c9210df458c2eb
wuzhangwei@ubuntu:~$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
wuzhangwei/mytomcat   1.0                 cc2bd2cf2809        6 seconds ago       540MB
wuzhangwei/javaweb    1.0                 5419a4a8f597        42 hours ago        540MB
mysql                 latest              990386cbd5c0        5 weeks ago         443MB
redis                 latest              a55fbf438dfd        2 months ago        95MB
centos                latest              9f38484d220f        3 months ago        202MB
nginx                 latest              881bd08c0b08        3 months ago        109MB
hello-world           latest              fce289e99eb9        5 months ago        1.84kB
wuzhangwei@ubuntu:~$ 

启动镜像

wuzhangwei@ubuntu:~$ docker run -d -p 18080:8080 --name mytomcat wuzhangwei/mytomcat:1.0 /root/run.sh
fa8fa28d8d56f50c33db6295e1870dc185c6fda2a6f1fde20fccd439a0bb6dd3
wuzhangwei@ubuntu:~$ 

命令介绍:

-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 18080 端口,这样就向外界暴露了 18080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
–name:表示容器名称,用一个有意义的名称命名即可。

输入下面的地址,就可以访问tomcat首页了

http://192.168.175.136:18080/

注意:这里使用的是宿主机的 IP 地址,与对外暴露的端口号 18080,它映射容器内部的端口号 8080。

访问tomcat首页
在这里插入图片描述

最后

先写到这里吧,由于时间关系,本文先介绍docker搭建Javaweb运行环境的简单过程,后面再写一篇可以真正运行Javaweb项目的文章,本次搭建还没有加入mysql、redis、es、mq等服务,下次一并加上。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值