应用容器引擎 Docker
一、docker的基本概念
1、应用容器:
概念:容器就是存放东西的地方、应用容器就是存储软件的地方
比如:我们可以 把centos。tomcat、jdk 按照到容器上
容器可以模拟出一台迷你的小型计算机一样,帮我们运行这些软件
2、容器和虚拟机的区别
共同点: 都是利用虚拟机化的技术,提供软件的独立运行环境。
虚拟机技术: 完全的虚拟化出一台计算机(硬件),安装操作系统,安装并运行软件
容器技术: 也是一种虚拟化技术,但是它不会虚化硬件和操作内核,它会共用宿主机的OS内核和硬件
容器的优点:启动快、体积小、性能高、迁移方便
虚拟机优点:隔离性强
3、什么是docker
docker 是一个开源的、c/s架构的应用容器引擎。是管理容器的一个软件平台,我们可以使用docker将软件
放入容器中,并且可以通过docker来控制容器的启动 停止 创建 删除
docker 的优点
1) 安装部署非常快、体积小、性能高
2) 能够让开发 测试 生产的环境保持一致
3) 缩短软件部署生命周期
4) 和微服务项目非常搭!!
二、docker的安装和启动
安装: 参照资源内视频
检查:
docker -v //简单的查看版本信息
docker version // 查看版本详细信息
docker info // 查看docker 的概要信息
启动:
systemctl status docker // docker的状态
systemctl start docker // 启动docker
systemctl stop docker // 停止docker
systemctl restart docker // 重启docker
systemctl enable docker // 开机运行docker
三、docker的组件
镜像(image)
镜像的本质是一些特殊文件,提供了容器运行时所必须的资源
容器(container)
容器是根据镜像创建出来的可运行实例,可以通过docker命令控制 它的创建 启动 停止 销毁
注册中心(registry)
存储镜像的地方,像我们maven中使用中央仓库。
中央仓库是存储jar包的
注册中心是存储镜像的
公有: 比如:官方提供的注册中心 DockerHub (默认)
私有: 比如:企业内部搭建的私人服务器注册中心
四、docker的基本操作
image 镜像的操作
1)查看镜像
// 查看所有镜像
docker images
REPOSITORY 仓库
TAG 标签
IMAGE ID 镜像ID
// 查询出所有镜像 只显示ID
docker images -q
2)搜索镜像
docker search 关键字的名称
// 去注册中心 搜索名字中 包含centos的所有镜像
docker search centos
3)拉取镜像
// http://docker.io/ centos:latest
docker pull 注册中心/仓库名:标签
// 使用默认的注册中心
docker pull 仓库名:标签
// 默认下载 最新版本
docker pull 仓库名
4)删除镜像
docker rmi 镜像的名称:标签
docker rmi 镜像的ID
//全部删除
docker rmi `docker images -q`
container 容器操作
1)查看容器
// 查看运行中的容器
docker ps
// 查看所有容器
docker ps -a
2)*创建容器
docker run [选项] 镜像:标记 [命令]
常用选项:
-i : 代表容器创建完毕后,会直接运行
--name : 给容器起名称
-d : 让容器在后台运行(守护式容器)
-t : 启动容器后,进入到容器内部 (交互式容器)
-v : 设置宿主机和容器的目录映射
-p : 设置宿主机和容器的端口映射
交互式容器:
// 创建 立即运行 进入容器内部
docker run -it --name=mycentos centos /bin/bash
// 进入到容器内部之后 通过exit命令退出
exit
当我们使用exit退出脚本之后,容器会关闭
守护式容器:
docker run -id --name=mycentos2 centos
// 使用这个命令会立即进入到mycentos2容器中
docker exec -it mycentos2 /bin/bash
// 守护式容器 调用exit时, 不会关闭容器
3)停止、启动、删除
// 停止容器
docker stop 容器名称或容器ID
// 启动容器
docker start 容器名称或容器ID
// 删除容器 不能删除启动的容器
docker rm 容器名称或容器ID
// 强制删除
docker rm -f 容器名称或容器ID
// 重启容器
docker restart 容器名称或容器I
// 容器的暂停与恢复
docker pause 容器名称或容器ID
docker unpause 容器名称或容器ID
4) 文件拷贝
// 将宿主机的文件 拷贝到 容器 的容器目录
docker cp 宿主文件目录 容器名称:容器目录
// 容器中的文件 拷贝到 宿主机的目录上边
docker cp 容器名称:容器目录 宿主文件目录
5)创建容器目录挂载
docker run -id -v 宿主机的目录:容器的目录地址 --name=容器名字 镜像:标签
6)删除容器
docker rm 容器的名称或容器的ID
// 强制删除
docker rm -f 容器的名称或容器的ID
// 删除全部容器
docker rm `docker ps -a -q`
五、实战应用部署
mysql的部署:
步骤:
1) 搜索镜像
docker search mysql
2) 拉取镜像
docker pull centos/mysql-57-centos7
3) 创建并运行容器
docker run -id --name=mysql2 -p 9001:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7
4) 管理容器
docker stop mysql2
docker start mysql2
tomcat的部署
步骤:
1) 搜索镜像
docker search tomcat
2) 拉取镜像
docker pull tomcat
3) 创建并运行容器
// 创建容器 设置目录挂载
docker run -id --name=mytomcat -p 9003:8080 -v /usr/local/mytomcat:/usr/local/tomcat/webapps tomcat
4) 管理容器
// 我们只需要把要部署的项目 放到虚拟机的/usr/local/mytomcat目录下 就完成了部署
nginx的部署
步骤:
1) 搜索镜像
docker search nginx
2) 拉取镜像
docker pull nginx
3) 创建并运行容器
// 创建容器 设置目录挂载
docker run -id --name=mynginx -p 9004:80 nginx
4) 管理容器
// 我们只需要把要部署的项目 放到虚拟机的/usr/share/nginx/html目录下 就完成了部署
// 将准备好的静态页面 上传到linux服务器
docker cp ./shop mynginx:/usr/share/nginx/html
redis的部署
步骤:
1) 搜索镜像
docker search redis
2) 拉取镜像
docker pull redis
3) 创建并运行容器
// 创建容器 设置目录挂载
docker run -id --name=myredis -p 9005:6379 redis
4) 管理容器
六、 备份与迁移
将容器保存为新的镜像
docker commit 容器的名称 仓库名称:标记
镜像的备份
docker save -o 文件名称.tar 仓库名称:标记
镜像的加载
docker load -i 文件名称.tar
七、通过Dockerfile构建镜像
概念: Dockerfile是一个脚本文件,我们可以在这个脚本文件里面定义构建镜像的命令和参数
通过执行这个脚本文件,可以构建一个新的镜像
小练习: 使用Dockerfile脚本文件,在centos镜像的基础上 安装jdk在打包新镜像
1. 1.8jdk上传到服务器
2. 使用mkdir 创建 centosjdk 并进入
3. vi创建Dockerfile并进入编辑页面
4. 编辑如下命令:
# 设置基础镜像
FROM centos
# 创建者名称
MAINTAINER Mr.chen
# 设置工作目录,用户进入到容器时,会直接进入这个目录
WORKDIR /usr
# 创建存放java文件的目录
RUN mkdir /usr/local/java
# 将宿主机的安装包 拷贝到容器
ADD jdk-8u161-linux-x64.tar.gz /usr/local/java
# 配置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_161
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
5. 构建的命令
docker build -t 镜像名称 文件夹目录地址
八、搭建私有的registry注册中心
概念: 是存储镜像仓库的地方,我们可以在注册中心下载需要的镜像,也可以把镜像推送到注册中心
搭建私有注册中心
1. 下载注册中心服务的镜像
docker pull registry
2. 创建注册中心容器 启动
docker run -id -p 5000:5000 --name=myregistry registry
3. 检查注册中心有没有搭建成功
http://192.168.18.131:5000/v2/_catalog
上传镜像到注册中心
1. 设置docker信任注册中心的地址
vi /etc/docker/daemon.json
"insecure-registries":["192.168.18.131:5000"]
2. 重启docker 重启 注册中心
systemctl restart docker
docker start myregistry
3. 将要上传的镜像,更改一下tag,代表这个镜像是要上传私人注册中心
docker tag centosjdk8 注册中心/仓库名:标记
docker tag centosjdk8 192.168.18.128:5000/centosjdk8:1.0.0
4. 上传镜像到注册中心
docker push 192.168.18.128:5000/centosjdk8:1.0.0
5. 检查注册中心有没有推送成功
http://192.168.18.131:5000/v2/_catalog
刷新网址,仓库列表有没有我们上传的镜像 |
|