Docker

一、介绍

1.什么是Docker?

2.Docker的基本组成

镜像(image):

容器(contaioner):

仓库(respository):

二、场景应用

部署javaWeb项目

简易安装常用数据库

安装mysql

安装redis

一、介绍

1.什么是Docker?

2.Docker的基本组成

镜像(image):


docker镜像好比一个模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器(服务运行或者项目运行就在容器中)




容器(contaioner):


Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建


启动,停止,删除,基本命令


目前可以把这个容器理解为就是一个简易的linux系统




仓库(respository):


仓库就是存放镜像的地方


仓库分为公有仓库和私有仓库


Docker Hub(默认是国外的)


阿里云都有容器服务器(配置镜像加速)




二、场景应用

使用Docker来部署项目或者拉取项目时,先要理解相关的命令


命令文档: https://docs.docker.com/engine/reference/commandline/


部署javaWeb项目

war包基本架构:


由jsp文件和web.xml配置文件










jsp文件简单编写:


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

  <head>

  <meta http-equip="Content-Type" content="text/html"; charset=UTF-8">

  <title>Inset title here</title>

  </head>

  <body>

     ----welcome----

     <!--输出页面-->

    <H1>hello springmvc~</H1>

    <!--输出控制台-->

    <% System.out.println("=====docker tomcat self");%>

  </body>

</html>

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.



web.xml文件:


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

         version="4.0">


         <display-name>test</display-name>


</web-app>

1.

2.

3.

4.

5.

6.

7.

8.

9.



手动创建tomcat的Dockerfile(默认名)文件,用于创建镜像


FROM centos

MAINTAINER fyp<fyp010311@163.com>

COPY c.txt /usr/local/cincontainer.txt

ADD jdk-8u281-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-9.0.48.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local

WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_281

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.48

ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.48

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.48/bin/startup.sh"]

# CMD ["/usr/local/apache-tomcat-9.0.48/bin/catalina.sh","run"]

CMD /usr/local/apache-tomcat-9.0.48/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.48/bin/logs/catalina.out

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.



将jdk和tomcat压缩包放在Dockerfile同一目录下,即相对路径相同






开启docker服务


[root@localhost]$ systemctl start docker

1.



使用该Dockfile文件来创建镜像,前提是当前目录有该文件


[root@localhost]$ docker build -t fyptomcat9 .

1.



否则就得指明Dockfile路径


[root@localhost]$ docker build -f /docker/Dockfile  -t fyptomcat9 .

1.



编程宗旨:约定优于配置,配置优于编程,所以在当前目录下docker在没有指明Dockfile文件路径会默认约定其文件名




创建成功后,查看镜像


[root@localhost]$ docker images

1.



镜像名为第二条命令-t 后面附带的名字,接着就可以运行该镜像,实例化成容器


[root@localhost]$ docker run -d -p 9080:8080 --name myt9  --privileged=true \

 -v /mydocker/tomcat9/test:/usr/local/apache-tomcat-9.0.48/webapps/test \

 -v /mydocker/tomcat9/tomcat9logs:/usr/local/apache-tomcat-9.0.48/logs \

 fyptomcat9

1.

2.

3.

4.



项目结果截图:




简易安装常用数据库

安装mysql

先拉取镜像


[root@localhost]$ docker pull mysql:5.7.21

1.



拉完后设置参数就可以运行了


[root@localhost]$ docker run -p 12345:3306 --name mysql \

-v /myDocker/mysql/conf:/etc/mysql/conf.d \

-v /myDocker/mysql/logs:/logs \

-v /myDocker/mysql/data:/var/lib/mysql/ \

-e MYSQL_ROOT_PASSWORD=123456 \

-d mysql:5.7.21

1.

2.

3.

4.

5.

6.



参数说明:






进入终端


[root@localhost]$ docker exec -it MySQL运行成功后的容器ID /bin/bash

1.



登录mysql


[root@localhost]$ mysql -h 127.0.0.1 -P 3306 -u root

1.



测试mysql


SQL> show databases;

1.

疑问解答:


运行的镜像是从hub上拉取的,封装了许多环境,如下图暴露默认的ip和端口,指定了默认的mysql安装位置为数据卷,即共享目录,达到同步的目的






安装redis

第一步首先从docker hub上拉取redis


[root@localhost]$ docker pull redis

1.



再运行该镜像


[root@localhost]$ docker run -p 6379:6379 -v /myDocker/myredis/data:/data \

-v /myDocker/myredis/conf/redis.conf/:/usr/local/etc/redis/redis.conf \

-d redis \

redis-server /usr/local/etc/redis/redis.conf \

--appendonly yes

1.

2.

3.

4.

5.



登录到redis-cli


[root@localhost]$ docker exec -it 21ec78e0235e redis-cli

1.



疑问解决:


为什么要把持久化目录放到/data下?


因为从hub上拉取的镜像是经过包装过的,是带有环境的




该镜像运行后的工作路径即当前目录为/data


会在该目录生成 dump.rdb和appendonly.aof


为什么会在当前目录?看配置文件redis.conf













默认appendonly.aof是不会开启的,但运行镜像时添加了参数--appendonly yes,会更改这个属性




更多dockerFile官网文件可看:


https://github.com/docker-library/redis/blob/af431c381c3718dbe4d87572f7d3c330a063df8d/6.2/Dockerfile




与CSDN同步,更多疑难解答请转至 https://blog.csdn.net/F15217283411




评论区可留言,可私信,可互相交流学习,共同进步,欢迎各位给出意见或评价,本人致力于做到优质文章,感谢各位!

-----------------------------------

©著作权归作者所有:来自51CTO博客作者小明爱java编程的原创作品,如需转载,请与作者联系,否则将追究法律责任

手把手搭建web网站、数据库服务器、缓存服务器(Docker、myql、redis)

https://blog.51cto.com/u_15409831/4338364