Docker安装与仓库使用

2024-01-08 14:37:32

日升时奋斗,日落时自省?

目录

1、Docker引擎

2、Docker和虚拟机的区别

3、Docker架构

4、Docker安装

4.1、Ubuntu安装

4.1.1、查看版本需求

4.1.2、卸载历史版本

4.1.3、配置docker下载源

4.1.4、自动启动配置

4.1.5、查看docker版本

4.2、CentOS安装

4.2.1、查看版本需求

4.2.2、卸载旧版本

4.2.3、卸载历史版本

4.2.4、自动启动配置

4.2.5、查看docker版本

5、Docker目录修改

6、镜像仓库工作机制

6.1、镜像仓库使用流程

6.2、实际开发中镜像仓库如何使用

6.3、镜像仓库的拉取机制

7、常用镜像仓库

7.1、Docker Hub功能浏览

7.2、镜像tag查找

?8、镜像仓库命令

8.1、docker login

8.2、docker pull

8.3、docker push

8.4、docker search

8.5、docker logout


注:此博客主要是对docker的认识和使用机制,hub.dockerd的基本使用(没有涉及到命令相关)

Docker它本身不是容器,而是容器的易用工具,容器是 linux 内核中的技术,Docker 只是把这种技术在使用上简易普及了。(简单来说制造镜像,便于我们使用,成本比较小)

1、Docker引擎

Docker 早期是基于 LXC 容器管理引擎实现,当后来成熟之后,Docker 自建了一个容器引擎叫 libcontainer,后来 CNCF 的介入,Docker 又研发了一个工业化标准的容器引擎 runC,目前所使用的新版 Docker,所使用的容器引擎就是 RunC

2、Docker和虚拟机的区别

传统虚拟机Docker容器

磁盘占用

几个GB到几十个GB左右几十MB到几百MB左右

CPU内存占用

虚拟操作系统非常占用CPU和内存,需要通过虚拟层调用占用率高

Docker引擎占用资源极低,直接作用于硬件资源占用少

启动速度(从开机到运行项目)几分钟(从开启容器到运行项目)几秒

安装管理

需要专门的运维技术安装、管理方便

应用部署

手动部署,速度慢体系化部署,可以自动化,速度快

隔离性

系统级别进程级别

封住程度

打包整个操作系统打包项目代码和依赖信息

?Docker为什么比虚拟机资源利用率高,启动快


?

docker 有比虚拟机更少的抽象层,docker 不需要 Hypervisor 实现硬件资源虚拟化,运行在 docker 容器上的程序直接使用的是实际物理机的硬件资源,因此在 cpu、内存利用率上 docker 将会在效率上有明显的优势。 docker 利用的是宿主机的内核,而不需要Guest OS,节省了 Guest OS 占用的资源

3、Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。Docker 容器通过 Docker 镜像来创建

  • Docker仓库(Registry)

?Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub 供了庞大的镜像集合供使用

  • Docker daemon

Docker daemon 是服务器组件,是 Docker 最核心的后台进程,我们也把它称为守护进程

  • Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信

  • Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器

  • Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板

  • Docker 容器(Container)

容器是独立运行的一个或一组应用

注:创建镜像(Images)前,会先去daemon中找,能找到了直接用,找不到在去仓库里重新下载

4、Docker安装

各大平台支持条件,我们大多数友友 Centos或者Ubuntu的am64的

?Server版本安装

4.1、Ubuntu安装

安装需要依赖

操作系统尽量Ubuntu18或者及以上

4.1.1、查看版本需求

CPU支持APM和X86_64 (可以先查看版本是否能对应上)

查看CPU?

uname -a

查看版本的

cat etc/*release*

4.1.2、卸载历史版本

注:如果没有安装过,不用进行此步骤

卸载旧版本

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

卸载历史版本 (删除软件)

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y

删除目录

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

4.1.3、配置docker下载源

sudo apt install curl -y

sudo mkdir -m 0755 -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg

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

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

4.1.4、自动启动配置

配置加载

sudo systemctl daemon-reload

启动服务

sudo systemctl start docker

开启启动

sudo systemctl enable docker

查看服务状态

sudo systemctl status docker

4.1.5、查看docker版本

docker version?

4.2、CentOS安装

支持的操作系统

CentOS7、CentOS8、CentOS9

支持CPU ARM/X86_64

4.2.1、查看版本需求

CPU支持APM和X86_64 (可以先查看版本是否能对应上)

查看CPU?

uname -a

查看版本的

cat etc/*release*

4.2.2、卸载旧版本

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

4.2.3、卸载历史版本

删除机器上的包

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

执行卸载

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

安装utils工具

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.2.4、自动启动配置

配置加载

sudo systemctl daemon-reload

启动服务

sudo systemctl start docker

开启启动

sudo systemctl enable docker

查看服务状态

sudo systemctl status docker

4.2.5、查看docker版本

docker version?

5、Docker目录修改

注:如果就是为了使用镜像的话,就可以不用这个操作了,只是在公司中为了镜像太多,空间不够用的时候,提前准备好

Docker 默认的安装目录为/var/lib/docker,这里面会存放很多很多镜像,所以我们在安装的时候需要考虑这个目录的空间,有三种解决方案:
(1)将/var/lib/docker 挂载到一个大的磁盘,这种一般我们能控制挂载目录,像腾讯云这种云厂商在安装 K8s 的节点的时候提供了挂载选项,可以直接挂载这个目录过去
(2)安装之前挂载一个大的磁盘,然后创建一个软链接到/var/lib/docker,这样就自动安装到我们空间比较大的磁盘了
(3)安装了 docker,然后发现忘了配置这个目录,我们需要修改 docker 的配置文件

假定我们磁盘的大的目录为/data

mkdir -p /data/var/lib/docker

编辑配置文件

vi /etc/docker/daemon.json

输入下面JSON格式内容

{
"data-root": "/data/var/lib/docker"
}

加载配置

sudo systemctl daemon-reload

重启docker

sudo systemctl restart docker

查看docker状态

sudo systemctl status docker

6、镜像仓库工作机制

6.1、镜像仓库使用流程

玩docker:以后这个地方你会常来的,没有号的友友注册一个

通过docker login 登录仓库(前提是友友你已经注册过账号了)

docker pull 拉取需要的镜像

通过dockerfile或者commit 等方式制作完镜像通过docker push上传到仓库

6.2、实际开发中镜像仓库如何使用

Docker Registry 中的镜像通常由开发人员制作,而后推送至“公共”或“私有”Registry 上保存,供其他人员使用,例如“部署”到生产环境

开发环境:开发人员使用的一套环境
测试环境:需求开发完成后,发布到供测试人员进行测试的环境
预发布环境:版本测试完成后,发布到和生产类似的环境,提前模拟生产发布
生产环境:真正面向客户的环境

6.3、镜像仓库的拉取机制

启动容器时, docker daemon 会试图从本地获取相关的镜像;本地镜像不存在时,其将从 Registry 中下载该镜像并保存到本地

7、常用镜像仓库

7.1、Docker Hub功能浏览

注:搜索你需要,为了找合适版本,以及稳定性 (尽量使用较为官方的)

?7.2、镜像tag查找

也可以直接得拉取复制命令即可

?对应版本拉取命令 (对应版本)

镜像的大小,id ,cpu

?

?8、镜像仓库命令

注:主要操作仓库的命令

命令别名功能
docker login登录仓库
docker pulldocker image pull拉取镜像
docker pushdocker image push推送镜像
docker search查找镜像
docker logout登出仓库

8.1、docker login

登录到一个docker镜像仓库,如过未指定镜像仓库地址,默认为官方仓库docker hub

docker login [options] [server]

参数配置:-u :登录用户名 、-p:登录密码

docker login -u 用户名 -p 密码? ?

注:不输入这两个参数也没事的,输入docker login命令后会提醒你输入用户名和密码

8.2、docker pull

从镜像仓库中拉取或者更新指定镜像

docker pull [options] 镜像名称:[:Tag|@DIGEST]

就tag就是标签? 或者是 @ID

docker pull == docker image pull

参数:

-a 拉取所有tagged镜像(一般不需要)

--disable-content-trust:忽略镜像的校验,默认开启

例如:docker pull nginx:1.23.3

8.3、docker push

使用前提使用docker login进行登录后使用

docker push [options] Name[:tag]

tag就是给它打一个标签

docker image push==docker push?

参数:

-a :推送所有tagged镜像

--disable-content-trust:忽略镜像的校验,默认开启

docker push mynginx:v1? ?(最后这个就是版本)

8.4、docker search

从docker hub查找镜像

docker search [options] TERM

参数:

--no-trunc:显示完整的镜像描述

-f <过滤条件>:列出收藏数不小于指定值的镜像

举个例子:docker search -f star>10 nginx? ?(友友们可以去试试)

8.5、docker logout

登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

docker logout?

文章来源:https://blog.csdn.net/c_study__c/article/details/135374063
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。