docker
Docker概述
Docker是一个开源平台,通过将应用程序隔离到轻量级、可移植的容器中,自动化应用程序的部署、扩展和管理。容器是独立的可执行单元,封装了运行应用程序所需的所有必要依赖项、库和配置文件,可以在各种环境中稳定地运行。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
隔离:docker核心思想!
docker的思想来源于集装箱
docker 十分轻巧!!!
基于Go语言开发的,开源项目!
虚拟机也是属于虚拟化技术,Docker 容器技术,也是一种 虚拟化技术!
- Vm: linux centos原生镜像 (一个电脑!) 隔离,需要开启多个虚拟机! 几个G 几分钟
- docker:隔离,境像(最核心的环境 4m + jdk + mysql)十分的小巧, 运行像就可以了! 小巧! 几个M KB秒级启动!
虚拟机技术缺点:
1、资源占用十分多
2、冗余步骤多
3、启动很慢 !
容器化技术容器化技术不是模拟的一个完整的提作系统
比较Docker 和 虚拟机技术的不同:
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 容器内的应用直接运行在 宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便
- 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响。
文档地址: https://docs.docker.com/ (超级详细)
仓库地址: https://hub.docker.com/
容器和Docker
Docker是一种简化创建、部署和管理容器的平台。它为开发人员和管理员提供了一组工具和API,用于管理容器化的应用程序。使用Docker,您可以将应用程序代码、库和依赖项构建和打包成一个容器映像,该映像可以在支持Docker的任何环境中分发和一致地运行。
容器的必要性
应用更快速的交付和部署
传统:一堆帮助文档,安装程序
Docker: 打包镜像发布测试,一键运行
更便捷的升级和扩缩容
使用了Docker之后,我们部署应用就和搭积木一样!
项目打包为一个镜像,扩展 服务器A ! 服务器B
更简单的系统运维
在容器化之后,我们的开发,测试环境都是高度一致的。
更高效的计算资源利用
Docker 是 内核级别的虚拟化,可以在一个物理机上可以运行很多的客器实例!服务器的性能可以被压榨到极致.
Docker 的基本组成
镜像(image ) :
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像===> run ==> tomcat01 容器(提供服务器)通过这个镜像可以创建多个容器( 最终服务运行或者项目运行就是在容器中的)。
容器(container) :
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的
启动,停止,删除,基本命令!
目前就可以把这个容器理解为就是一个简易的linux系统
仓库(repository) :
仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库!
Docker Hub(默认是国外的) 阿里云….都有容器服务器(配置镜像加速 !)
安装Docker
环境准备
- Linux基础
- CentOS 7或以上版本
- 使用Xshell连接远程服务器进行操作
环境查看
1 | #系统内核是3.10以上 |
系统版本
1 | [root@163 ~]# cat /etc/os-release |
安装
卸载旧版本
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
需要的安装包
1
yum install -y yum-utils
设置镜像的仓库
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo //默认是国外的,非常慢
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //阿里云镜像
##更新yum软件包索引 yum makecache fast
安装docker相关的
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
ce 社区 ee企业
启动Docker
systemctl start docker
使用docker version查看是否安装成功
[root@163 ~]# docker version
Client: Docker Engine - Community
Version: 24.0.5
API version: 1.43
Go version: go1.20.6
Git commit: ced0996
Built: Fri Jul 21 20:36:32 2023
OS/Arch: linux/amd64
Context: defaultServer: Docker Engine - Community
Engine:
Version: 24.0.5
API version: 1.43 (minimum version 1.12)
Go version: go1.20.6
Git commit: a61e2b4
Built: Fri Jul 21 20:35:32 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.21
GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc:
Version: 1.1.7
GitCommit: v1.1.7-0-g860f061
docker-init:
Version: 0.19.0
GitCommit: de40ad0sudo docker run hello-world
查看一下下载的这个 hello-world镜像
docker images
了解
docker卸载
1 | 1. 卸载依赖 |
阿里云镜像加速
- 登录阿里云找到容器镜像服务
找到镜像加速器
配置使用
1 | sudo mkdir -p /etc/docker |
底层原理
Docker是什么工作的?
Docker 是一个Client-Server 结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问
DockerServer 接收到 Docker-Client 的指令,就会执行这个命令
Docker为什么比VM快
1、Docker有着比虚拟机更少的抽象层
2、docker 利用的是宿主机的内核,vm 需要是 Guest OS。
所以说,新建一个容器的时候,docker不需要想虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载 Guest OS,分钟级别的,而docker 是利用 宿主机的操作系统吗,省略了这个复杂的过程,秒级!