1. Docker概述
Docker是基于Go语言实现的云开源项目
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”
也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”
在我们正常工作中,主要有以下环境:
1.开发环境
2.测试环境
3.上线环境
现想象,如果在开发过程中,我们已经开发后,将项目进行打包编译后,交给测试人员,那么,测试人员会将工程包放入到测试服务器中
but
如果在开发中,我们使用的开发版本与测试服务器运行环境的版本不同,而造成的项目运行不起来,这一现象我们称为‘水土不服’
那么现在引入docker概念,将开发时的环境统一与项目工程打包在一起,形成一个个容器,这样,这个工程无论在哪个环境都可以正常运行

Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的
将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器
只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作

2.安装Docker
Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上
本次测试以Centos系统上演示
# 1、yum包更新到最新--更新centos7系统
yum update
#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源--指定docker下载路径
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#4、安装docker ,出现输入的界面都按y。 ce:社区版【】 ee:企业版【收费】
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v
【注:第一步可能会有点慢,因为要更新系统中的软件等】
3.Docker架构概念
容器(Container) :Docker 利用容器(Container)独立运行的一个或一组应用。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
其类似
github仓库,存放各种git项目的地方;
Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方
仓库分为公开仓库(Public)和私有仓库(Private)两种形式
最大的公开仓库是 Docker Hub(https://hub.docker.com/)
4.配置Docker镜像加速器
打开浏览器搜索阿里云
登录或注册后进入后搜索镜像(容器镜像服务)
点击进入打开管理控制台面板

找到图中位置,并且复制红框框中的命令到linux系统终端里运行命令(不用管它,一条龙服务)
如果不放心,可以去这个地址 /etc/docker/daemon.json 查看文件内容
cat /etc/docker/daemon.json

【注:每个人的镜像加速器命令是不一样的】
5.Docker相关命令
5.1 关于Docker服务命令
systemctl start docker 【注:启动docker】
systemctl stop docker 【注:关闭docker】
systemctl restart docker 【注:重启docker】
systemctl enable docker 【注:开启开机不关闭docker】
systemctl status docker 【注:查看docker状态 | 开启/关闭状态】
docker --help 【注:查看docker帮助,能查看关于docker命令】
docker 具体命令 --help 【注:查看docker帮助,能查看docker中具体命令的语法】
5.2 关于Docker镜像命令
docker images 【注:查看本地都有哪些镜像】
docker search 具体某物 【注:查看远程仓库的镜像,例:docker search mysql,其会搜索远程仓库中关于mysql的所有版本】
docker pull 具体某物:版本号 【注:将从远程仓库中拉取指定的某物到本地下载,例:docker pull mysql:5.7 【注:如果不输入版本号默认最新的版本】】
docker rmi 镜像名:版本号 【注:删除本地已下载的镜像,后面可跟镜像名,也可跟镜像ID】 docker rmi 镜像ID docker 命令 --help 【注:docker帮助命令,可帮助你查看命令的语法格式】
5.3 关于Docker容器命令
docker ps 【注:查看本地正在运行的容器】
docker ps -a 【注:查看本地所有的容器 |不管在不在运行都会被查看】
docker run -it --name=容器名 镜像名:版本 /bin/bash 【注:创建一个容器且进入已创建好的容器】
exit 【注:退出当前容器】【注:在此命令下,退出的容器会关闭 |进程会关闭】
Ctrl+Q+P 【注:退出当前容器】【注:在此命令下,退出的容器不会关闭,会在后台继续运行着】
docker exec -it 容器名/容器ID /bin/bash
【注:进入正在运行的容器内】【注:在此命令下进入的容器,在次使用exit命令退出,容器不会关闭了】
docker start 容器名/容器ID 【注:启动docker容器】
docker stop 容器名/容器ID 【注:关闭docker容器】
docker rm 容器名/容器ID 【注:删除已关闭的容器【注:不能删除已开启的容器】】
【注:强制删除容器【注:不管容器是否已启动都会强制删除】】
docker rm -f 容器名/容器ID docker logs 容器名/容器ID 【查看容器启动异常的日志】
6.容器的数据卷
【注:容器的数据卷需要引入三个问题】
1.docker容器被删除后,那么docker容器中的数据会被删除吗?答案是肯定的
2.docker容器可以与外部机器进行文件传输吗?答案是否定的
3.容器与容器之间如果进行数据交互?
这里就可以引入容器的数据卷概念,其是通过在宿主机(也就是linux系统)创建一个目录与docker容器中某个目录进行绑定
绑定后,数据即可进行共享
数据卷的概念:
数据卷是宿主机中的一个目录或文件
当容器目录和数据目录绑定后,对方的修改会立即同步
一个数据卷可以被多个容器同时挂载
一个容器也可以被挂载多个数据卷
作用:
1.解决数据持久化问题
2.解决外部机器和容器的间接通讯问题
3.解决容器之间的数据交换

6.1配置数据卷
docker run -it --name=容器名 -v 宿主机目录:容器内目录 镜像名:版本 /bin/bash
【注:在创建容器时,将数据卷与容器中某个目录进行绑定】
【注:目录必须是绝对路径】
【注:如果目录不存在会自动创建】
【注:可以挂载多个数据卷,多个数据卷绑定空格分隔】
【注:列:docker run -it --name=容器名 -v 宿主机目录:容器目录 -v 宿主机目录:容器目录 -v 宿主机目录:容器目录 ...... 镜像:版本 /bin/bash】
7. Docker应用部署

以上便是Docker中的内容,如有漏缺请在下方留言告知,我会及时补充
