一、docker的介绍
1、为什么要使用docker?
docker交付的是代码和环境
2、容器和虚拟机
虚拟机:运行在一个操作系统里的另一个操作系统(centos),缺点:占用资源多,启动慢
容器:是一种虚拟化技术,不是一个完整版本的操作系统, 优点:占用资源少,启动快
3、什么是docker?
docker运行在容器上,是一个mini版的linux,可以使程序在不同的环境中运行
4、docker核心概念
镜像(image):安装好的环境的模板[类]
容器(Container):运行中的镜像[对象]
仓库(Registry): 保存镜像
二、 docker的安装
1、安装切换仓库地址的软件包
yum install -y yum-utils
2、切换仓库地址到阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装docker
yum -y install docker-ce
4、开启和关闭
systemctl start docker #启动
systemctl status docker #状态
systemctl stop docker #关闭
systemctl restart docker #重启docker
systemctl enable docker
5、配置镜像加速
docker的常用命令
镜像命令:
1、检索
docker search IMAGE
eg:
docker search tomcat
2、拉取
docker pull IMAGE[:TAG] (TAG版本号)
eg:
docker pull tomcat:8.5.100
3、列表
docker images
4、删除
docker rmi IMAGE[:TAG]
eg:
docker rmi tomcat:8.5.100
容器命令:
1、新建并启动
docker run [options] IMAGE[:TAG]
options说明:
-d 后台启动
--name 指定容器的名称
-p 指定端口映射 hostPost:containerPort
eg:
docker run tomcat:8.5.100 前台启动
docker run -d tomcat:8.5.100 后台启动
docker run -d --name tomcat_1 tomcat:8.5.100 后台启动tomcat_1
docker run -d --name tomcat_2 -p 8080:8080 tomcat:8.5.100
2、关闭
docker stop CONTAINER NAME
eg:
docker stop tomcat_1
3、启动
docker start CONTAINER NAME
eg:
docker start tomcat_1
4、删除
docker rm CONTAINER NAME
eg:
docker rm tomcat_1
5、列表
docker ps [-a]
6、日志
docker logs CONTAINER NAME
eg:
docker logs tomcat_2
7、与运行中的容器交互
docker exec [options] CONTAINER NAME [command]
options:
-i:与容器交互,与t连用
-t:分配伪终端,与i连用
四、数据卷
1、什么是数据卷?
是宿主机和容器同步数据的目录,若目录不存在则自动创建
2、语法
docker run -v 宿主机目录:容器内目录
eg:
docker run --name c1 -id -v /root/data_host:/root/data_container centos7
五、DockerFile
1、什么是DockerFile?
用于构建 镜像的脚本文件
2、DockerFile常用命令
FROM:继承
MAINTAINER:署名
ENV:声明变量
WORKDIR:工作目录
RUN:镜像构建时执行的命令
CMD:容器启动时执行的命令
ADD:从宿主机复制文件到容器中,并能自动解压压缩文件
EXPOSE:同端口映射
3、DockerFile入门
自定义centos
编写Dockerfile
cd /usr/local/docker
vim DockerFile:
#继承centos:7
FROM centos:7
#署名
MAINTAINER mgw<mgw@126.com>
#声明变量
ENV MYPATH /usr/local
#工作目录
WORKDIR $MYPATH
#添加vim和ifconfig的支持
RUN yum -y install vim
RUN yum -y install net-tools
构建
docker build [OPTIONS] PATH
OPTIONS说明:
-f: DockerFile路径
-t: 自定义镜像名称:TAG
docker build -f DockerFile -t mycentos:1.0 .
测试
docker run -it --name mycentos mycentos:1.0
4、压缩镜像
docker save -o mycentos.1.0.rar mycentos:1.0
5、解压镜像
docker load -i mycentos.1.0.rar
6、查看镜像历史
docker history mycentos:1.0
自定义tomcat
编写DockerFile
FROM centos:7
MAINTAINER mgw<mgw@126.com>
#把java与tomcat添加到容器中
ADD jdk-8u191-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.100.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java
ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.100
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.100
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080
#启动时运行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-8.5.100/bin/startup.sh"]
CMD /usr/local/apache-tomcat-8.5.100/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.100/logs/catalina.out
构建并启动
docker build -f DockerFile2 -t mycentos:1.1 .
docker run -d -p 8080:8080 --name tomcat1 \
-v /usr/local/docker/tomcat/webapps/:/usr/local/apache-tomcat-8.5.100/webapps/ \
-v /usr/local/docker/tomcat/logs/:/usr/local/apache-tomcat-8.5.100/logs/ \
mycentos:1.1