第10节:Docker入门+下载安装配置

1、项目部署问题

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:

1.每个应用在Linux服务器部署的时候,都需要一些准备工作,因为需要安装各自依赖和函数库,不同的应用依赖可能不同,也可能是版本不同,导致关系很复杂,产生兼容问题。

2.不同环境有差异,开发,测试、生产环境。比如不同环境操作系统不同,或者版本不同。

导致项目的部署特别费时。

截屏2022-04-09 下午4.41.32

2、初识Docker

2.1、对于不同的依赖

docker将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包,将每个应用放到一个隔离容器去运行,避免互相干扰。

截屏2022-04-09 下午4.41.59

2.2、对于不同的系统

计算机内核与计算机硬件进行交互,并提供了操作硬件的指令,系统将内核指令封装为函数,便于程序员调用。

所以不同的系统,函数不同。

截屏2022-04-09 下午4.44.56

所以Docker会将系统函数库和应用依赖等一起打包,这样就算放到不同的操作系统,只要是Linux内核,就能运行。

2.3、总结

Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

  • Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像
  • Docker应用运行在容器中,使用沙箱机制,相互隔离

Docker如何解决开发、测试、生产环境有差异的问题?

  • Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行

3、Docker与虚拟机

虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。

这样应用会先调用虚拟机中安装的系统,然后在调用Windows操作系统,然后再调用硬件。

Docker只是打包所需的依赖、函数库等,应用运行过程中,直接通过操作系统调用硬件。

特性 Docker 虚拟机
性能 接近原生 性能较差
硬盘占用 一般为 MB 一般为GB
启动 秒级 分钟级

Docker和虚拟机的差异:

1、docker是一个系统进程;虚拟机是在操作系统中的操作系统

2、docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

4、Docker架构

4.1、镜像和容器

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。

容器之间是相互隔离的。镜像是只读的,比如Mysql数据库镜像,运行后,如果能写到镜像中,那么镜像就被修改了,所以镜像只读。容器会将镜像中的文件拷贝一份,进行写操作。

4.2、Docker和DockerHub

DockerHub:DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry。

国内也有类似于DockerHub 的公开服务,比如 网易云镜像服务、阿里云镜像库等。

4.3、docker架构

Docker是一个CS架构的程序,由两部分组成:

1、服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等

2、客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。

截屏2022-04-09 下午5.06.27

client可以向服务端发送命令

dockerbuild命令到达服务端,会被服务端守护进程接收处理,通过你提供的参数,构建镜像。

docker pull命令可以去远程Registry中拉取镜像到服务端。

docker run会使用镜像创建容器。

5、安装Docker

5.1、版本

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

Docker CE 分为 stable testnightly 三个更新频道。

官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 Ubuntu上的安装。

5.2、系统要求

需要是64位的以下系统之一

  • Ubuntu Impish 21.10
  • Ubuntu Hirsute 21.04
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

我的系统:截屏2022-04-09 下午5.22.36

5.2、卸载老版本

sudo apt-get remove docker docker-engine docker.io containerd runc

5.3、从远程仓库下载

1、更新apt软件包索引并安装软件包,以允许apt通过HTTPS从远程仓库下载:

 sudo apt-get update
 sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

2、添加docker GPG key:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

3、使用以下命令设置stable repository。要添加nightly或test repository,请在下面的命令中的单词stable之后添加单词nightly或test(或两者)。

Docker Engine有三种类型的更新通道:stable、nightly和test:

  • Stable channel为您提供最新版本以供全面使用。

  • test提供了在正式发布(GA)之前准备好进行测试的预发布。

  • nightly为您提供下一个主要版本的最新版本。

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4、下载Docker

直接下载最新版:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

下载指定版本:

列出版本:

apt-cache madison docker-ce 

截屏2022-04-09 下午5.40.05

选择指定版本下载:

 sudo apt-get install docker-ce=5:20.10.14~3-0~ubuntu-focal docker-ce-cli=5:20.10.14~3-0~ubuntu-focal containerd.io

5、检查是否成功

sudo docker run hello-world

截屏2022-04-09 下午5.44.09

5.4、相关命令

service docker status

有active(runing)表示启动成功

截屏2022-04-09 下午5.48.24

service docker start #启动
service docker stop  #关闭
service docker restart#重启

5.5、镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

修改/etc/docker/daemon.json配置文件

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://9yux2oo3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

5.6、卸载Docker

sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

猜你喜欢

转载自blog.csdn.net/LookOutThe/article/details/124065100