以前的发布:
- 开发提交src源代码交给运维运营进行部署,发现环境或部分版本不一致:如java版本、mysql版本、redis等多台集群,安装麻烦扩容或者或者缩容,比较麻烦
我们是不是可以开发直接将已经完成测试的全部环境以及代码一起交给运营进行发布呢?
我们的docker就是来完成这个工作的。
docker是一种容器虚拟化计数就像是vmware,linux的镜像文件是可以在vmware中运行,而linux镜像文件包括了linux运行的所有内容。而docker的镜像文件可以在dokcer中运行,docker的镜像文件包含了项目运行的所有环境(linux、java、redis等等)
docker的主要目标是:一次镜像、处处运行。
也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的app(可以说是一个web应用或者数据库应用等等)及其运行环境能够做到:一次镜像,处处运行。
容器和虚拟机的区别:容器不需要捆绑一整套操作系统,它只需要满足软件运行的最小内核就行了。
传统虚拟机技术是虚拟出一整套硬件后,在其上运行一个完成操作系统,在该系统上再运行所需应用进程容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源
与传统的虚拟机相比,docker优势体现在启动速度快,占用体积小
docker为什么比虚拟机快 docker有着比虚拟机更少的抽象层 docker利用的是宿主机的内核,而不需要加载操作系统OS内核
是一个只读的模板,一个文件。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。
它也相当于一个root文件系统。比如官方镜像centos7就包含了完成的一套centos7最小系统的root文件系统。
又等同于容器的‘源代码’,docker镜像文件类似于java的类模板,而docker容器实例类似于java中new出来的实例对象
容器是用镜像创建的运行实例,是一个服务。
就像java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。
容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做一个简单的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
3.3 仓库是集中存放镜像文件的地方。
docker公司提供的官方registry被称为docker hub,存放各种镜像模板的地方。
4. docker安装注意:docker必须部署在linux内核的系统上。如果其他系统想部署docker就必须安装一个虚拟的linux环境(windows想安装,需要先安装一个linux虚拟机,然后再在虚拟机中运行)
4.1 确定你的centos版本cat /etc/redhat-release4.2 卸载旧版本
sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
4.3 安装gcc
[root@yhx ~]# yum -y install gcc [root@yhx ~]# yum -y install gcc- c++4.4 安装需要的软件包
yum install -y yum-utils4.5 设置stable镜像仓库
注意:此处不要用官网的配置,是外网的,很慢,容易超时
这里我们使用阿里云的:
yum-config-manager
--add-repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.6 更新yum软件包索引
能够适当提升软件包下载速度
yum makecache fast4.7 安装docker ce
yum install docker-ce docker-ce-cli containerd.io4.8 启动docker
systemctl start docker4.9 查看是否安装成功 4.10 阿里云镜像加速
[root@yhx ~]# mkdir -p /etc/docker
[root@yhx ~]#
[root@yhx ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://jdhg9s8z.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://jdhg9s8z.mirror.aliyuncs.com"]
}
[root@yhx ~]# systemctl daemon-reload
[root@yhx ~]# systemctl restart docker



