Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
官网:https://www.docker.com
文档:https://docs.docker.com/
仓库:https://hub.docker.com
docker镜像好比一个模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器(服务运行或者项目运行就在容器中)
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建
启动,停止,删除,基本命令
目前可以把这个容器理解为就是一个简易的linux系统
仓库就是存放镜像的地方
仓库分为公有仓库和私有仓库
Docker Hub(默认是国外的)
阿里云都有容器服务器(配置镜像加速)
使用Docker来部署项目或者拉取项目时,先要理解相关的命令
命令文档:https://docs.docker.com/engine/reference/commandline/
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>
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
同一目录下,即相对路径相同
开启docker
服务
[root@localhost]$ systemctl start docker
使用该Dockfile
文件来创建镜像,前提是当前目录有该文件
[root@localhost]$ docker build -t fyptomcat9 .
创建成功后,查看镜像
[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
项目结果截图:
先拉取镜像
[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
参数说明:
进入终端
[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
安装位置为数据卷,即共享目录,达到同步的目的
第一步首先从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上拉取的镜像是经过包装过的,是带有环境的
该镜像运行后的工作路径即当前目录为/data
会在该目录生成 dump.rdb和appendonly.aof
为什么会在当前目录?看配置文件redis.conf
默认appendonly.aof
是不会开启的,但运行镜像时添加了参数--appendonly yes
,会更改这个属性
更多dockerFile官网文件可看:
https://github.com/docker-library/redis/blob/af431c381c3718dbe4d87572f7d3c330a063df8d/6.2/Dockerfile
参考链接:
Docker周阳的尚硅谷:https://www.bilibili.com/video/BV1Ls411n7mx?p=33&spm_id_from=pageDriver
百度百科、其他博客
docker官方文档:https://docs.docker.com/ 、 https://hub.docker.com