Docker学习(一) -- 理论及Linux安装、windows安装
1. 前言以前的发布:开发提交src源代码交给运维运营进行部署,发现环境或部分版本不一致:如java版本、mysql版本、redis等多台集群,安装麻烦扩容或者或者缩容,比较麻烦我们是不是可以开发直接将已经完成测试的全部环境以及代码一起交给运营进行发布呢?我们的docker就是来完成这个工作的。2. 是什么docker是一种容器虚拟化计数就像是vmware,linux的镜像文件是可以在vmware
1. 前言
以前的发布:
- 开发提交src源代码交给运维
- 运营进行部署,发现环境或部分版本不一致:如java版本、mysql版本、redis等
- 多台集群,安装麻烦
- 扩容或者或者缩容,比较麻烦
我们是不是可以开发直接将已经完成测试的全部环境以及代码一起交给运营进行发布呢?
我们的docker就是来完成这个工作的。
2. 是什么
docker是一种容器虚拟化计数就像是vmware,linux的镜像文件是可以在vmware中运行,而linux镜像文件包括了linux运行的所有内容。而docker的镜像文件可以在dokcer中运行,docker的镜像文件包含了项目运行的所有环境(linux、java、redis等等)
docker的主要目标是:一次镜像、处处运行。
也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的app(可以说是一个web应用或者数据库应用等等)及其运行环境能够做到:一次镜像,处处运行。
2.1 容器和虚拟机的区别:
容器不需要捆绑一整套操作系统,它只需要满足软件运行的最小内核就行了。
- 传统虚拟机技术是虚拟出一整套硬件后,在其上运行一个完成操作系统,在该系统上再运行所需应用进程
- 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便
- 每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源
与传统的虚拟机相比,docker优势体现在启动速度快,占用体积小
2.2 docker为什么比虚拟机快
- docker有着比虚拟机更少的抽象层
- docker利用的是宿主机的内核,而不需要加载操作系统OS内核
3. docker三要素:镜像、容器、仓库
3.1 镜像
是一个只读的模板,一个文件。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。
它也相当于一个root文件系统。比如官方镜像centos7就包含了完成的一套centos7最小系统的root文件系统。
又等同于容器的‘源代码’,docker镜像文件类似于java的类模板,而docker容器实例类似于java中new出来的实例对象
3.2 容器
容器是用镜像创建的运行实例,是一个服务。
就像java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。
容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做一个简单的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
3.3 仓库
是集中存放镜像文件的地方。
docker公司提供的官方registry被称为docker hub,存放各种镜像模板的地方。
4. docker安装
注意:docker必须部署在linux内核的系统上。如果其他系统想部署docker就必须安装一个虚拟的linux环境(windows想安装,需要先安装一个linux虚拟机,然后再在虚拟机中运行)
4.1 确定你的centos版本
cat /etc/redhat-release
4.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-utils
4.5 设置stable镜像仓库
注意:此处不要用官网的配置,是外网的,很慢,容易超时
这里我们使用阿里云的:
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.6 更新yum软件包索引
能够适当提升软件包下载速度
yum makecache fast
4.7 安装docker ce
yum install docker-ce docker-ce-cli containerd.io
4.8 启动docker
systemctl start docker
4.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
5. windows安装docker
5.1 启动虚拟化
打开任务管理器(CTRL+ALT+DELETE)-> 选择性能 -> CPU ->虚拟化,确认是否已启用
5.2 启用Hyper-v
控制面板(Win+R -> 输入control -> 回车) -> 程序 -> 启用或关闭Windows功能 -> 勾选Hyper-v
完成后重启计算机
5.3 安装docker desktop
-
下载 哪个地址都可以
https://desktop.docker.com/win/stable/Docker%20Desktop%20Installer.exe
https://docs.docker.com/desktop/windows/install/ -
安装非常简单,不赘述。安装成功后查看windows任务栏会出现docker的经典logo,小鲸鱼 安装完成后,会出现一个弹出框,提示:close and restart 此时需要重新启动计算机
-
重启完成后弹出一个窗口,勾选接受:
-
勾选完成后,会弹出一个窗口,提示安装wsl2:
-
点击其中的网址,执行步骤四,下载linux内核更新包并安装
-
安装完成后,跳过第五步,直接执行第六步,安装linux分发版,我这里安装的是ubuntu 22.04
-
安装完成后,系统会弹出bash界面,让你设置登录名和密码,我这里设置报错:参考的对象类型不支持尝试的操作
-
解决方案:
- 关闭所有VPN,或基于VPN原理的各种加速器(比如UU加速器),然后命令行或者PowerShell中运行netsh winsock reset
- 使用https://www.proxifier.com/tmp/Test20200228/NoLsp.exe中提供的可执行文件,在命令行或PowerShell中运行NoLsp.exe C:\windows\system32\wsl.exe
-
安装完成:
-
重启docker desktop客户端,出现这个界面代表启动成功了
5.4 查看版本 检验是否安装成功
PS C:\Users\xx\Desktop> docker --version
Docker version 20.10.17, build 100c701
PS C:\Users\xx\Desktop>
5.5 配置镜像地址
-
打开Docker配置中心:任务栏小鲸鱼右键 -> Settings
-
配置Docker国内镜像加速下载:左侧菜单 Docker Engine -> 右侧输入框 -> Apply & Restart
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
],
"insecure-registries": [],
"debug": false,
"experimental": false,
"features": {
"buildkit": true
},
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "20GB"
}
}
}
至此安装完成。
更多推荐
所有评论(0)