Docker
- 集装箱:会将所有需要的内容放到不同的集装箱中,谁需要这些环境就直接拿到这个集装箱就可以了。
- 标准化:
- 运输的标准化:Docker所有容器都集中保存在仓库中,需要时去仓库中搜索即可。
- 命令的标准化:Docker提供了一些列的命令,帮助我们去获取集装箱等等操作。
- 提供了REST的API:衍生出了很多的图形化界面,Rancher。
- 隔离性:Docker在运行集装箱内的内容时,会在Linux的内核中,单独的开辟一片空间,这片空间不会影响到其他程序。
- 中央仓库|注册中心:超级码头,上面放的就是集装箱
- 镜像:就是集装箱,也可以说镜像相当于类
- 容器:运行起来的镜像,也可以说容器是对象
Docker 安装
1、安装依赖环境
yum -y install yum-utils device-mapper-persistent-data lvm2
2、设置镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、开始安装
yum makacache fast
yum -y install docker-ce
4、启动Docker,并设置为开机自启
systemctl enable docker
5、测试docker(docker run hello-world)
docker run hello-world
Docker的中央仓库
- Docker官方的中央仓库:这个仓库是镜像最全的,但是下载速度较慢。
https://hub.docker.com/- 国内的镜像网站:网易蜂巢,daoCloud等,下载速度快,但是镜像相对不全。
https://c.163yun.com/hub#/home
http://hub.daocloud.io/ (推荐使用)
配置私服
1、在/etc/docker创建一个daemon.json文件
2、追加如下内容
{
“registry-mirrors”: [“https://registry.docker-cn.com”],
“insecure-registries”: [“ip:port”]
}
3、重启daemon-reload 和 Docker服务
systemctl daemon-reload
systemctl restart docker
Docker 镜像命令
1、docker pull 镜像地址[:tag] //镜像地址中去找 (tag是版本下同)
举个栗子:docker pull daocloud.io/library/tomcat:8.5.15-jre8
2、docker images //查看本地的全部镜像
3、docker rmi 镜像id/镜像名称:tag //删除镜像
4、docker save -o 保存的路径(路径后边加名字) 镜像id/镜像名称 //将镜像保存到本地的文件
5、docker load -i 本地文件 //将本地文件导入到docker镜像
6、docker tag 镜像id 新镜像名:tag //修改镜像名称
Docker容器命令
1、运行容器
docker run -d(后台运行) -p 宿主机端口:容器端口 --name 容器名称 镜像id/镜像名称:tag
2、查看容器
docker ps //查看正在运行的容器
docker ps -a //查看所有的容器
3、查看容器日志
docker logs -f 容器名称/容器id
4、进入到容器内部
docker exec -it 容器名称/容器id [/bin/]bash
5、复制宿主机文件到容器
docker cp 文件名 容器名称/容器id:容器内部路径
6、查看所有容器的id
docker ps -qa
7、停止/删除 全部容器
docker stop/rm$(docker ps -qa)
8、容器的启动/重启/停止/删除
docker start/stop/restart/rm 容器名称/容器id
Docker应用
Docker安装Tomcat
运行Tomcat容器,为部署SSM工程做准备
docker run -d -p 8080:8080 --name tomcat 镜像id/镜像名称:tag(私服/daocloud.io/library/tomcat:8.5.15-jre8)
Docker安装MySQL
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root (daocloud.io/library/mysql:5.7.4)
部署SSM工程
- 修改SSM工程环境,设置为Linux中Docker容器的信息
- 通过Maven的package重新打成war包
- 讲Windows下的war包复制到Linux中
- 通过docker命令将宿主机的war包复制到容器内部
- 测试访问SSM工程
数据卷
为了部署SSM的工程,需要使用到cp的命令将宿主机内的ssm.war文件复制到容器内部。
数据卷:将宿主机的一个目录映射到容器的一个目录中。
可以在宿主机中操作目录中的内容,那么容器内部映射的文件,也会跟着一起改变。
创建数据卷
创建数据卷之后,会默认存放在一个目录下 /var/lib/docker/volumes/数据卷名称/_data
docker volume create 数据卷名称
查看数据卷详情
查看数据卷的详细信息,可以查询到存放路径,创建时间等等
docker volume inspect 数据卷名称
查看全部数据卷
docer volume ls
删除数据卷
docker volume rm 数据卷名称
容器映射数据卷
映射有两种方式:
- 通过数据卷名称映射,如果数据卷不存在。Docker会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中。
- 通过路径映射数据卷,直接指定一个路径作为数据卷的存放位置。但是这个路径下是空的。
通过数据卷名称映射
docker run -v 数据卷名称:容器内部的路径 镜像id
通过路径映射数据卷
docker run -v 路径:容器内部的路径 镜像id
Dockerfile自定义镜像
我们可以从中央仓库下载一个镜像,也可以自己手动去制作一个镜像,需要通过Dockerfile去指定自定义镜像的信息
DockerFile
创建自定义镜像就需要创建一个Dockerfile,如下为Dockerfile的语言
from: 指定当前自定义镜像依赖的环境
copy: 将相对路径下的内容复制到自定义镜像中
workdir: 声明镜像的默认工作目录
run: 执行的命令,可以编写多个
cmd: 需要执行的命令(在workdir下执行的,cmd可以写多个,只以最后一个为准)
举个例子,制作SSM容器镜像,而且ssm.war要放在Dockerfile的同级目录下
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps
通过Dockerfile制作镜像
编写完Dockerfile后需要通过命令将其制作为镜像,并且要在Dockerfile的当前目录下,之后即可在镜像中查看到指定的镜像信息,注意最后的.(点)
docker build -t 镜像名称[:tag] .