Docker

一、介绍

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​​配置文件

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


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


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>


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>


手动创建​​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


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

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


开启​​docker​​服务

[root@localhost]$ systemctl start docker


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

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


否则就得指明Dockfile路径

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


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


创建成功后,查看镜像

[root@localhost]$ docker images


镜像名为第二条命令​​-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


项目结果截图:

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

简易安装常用数据库

安装mysql

先拉取镜像

[root@localhost]$ docker pull mysql:5.7.21


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

[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


参数说明:

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


进入终端

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


登录mysql

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


测试mysql

SQL> show databases;

疑问解答:

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

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


安装redis

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

[root@localhost]$ docker pull redis


再运行该镜像

[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


登录到redis-cli

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


疑问解决:

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

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

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

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

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

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

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


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


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


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


更多dockerFile官网文件可看:

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


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


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