Docker安装与仓库使用

日升时奋斗,日落时自省

目录

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.1、Docker Hub功能浏览)

7.2、镜像tag查找

8、镜像仓库命令

[8.1、docker login](#8.1、docker login)

[8.2、docker pull](#8.2、docker pull)

[8.3、docker push](#8.3、docker push)

[8.4、docker search](#8.4、docker search)

[8.5、docker logout](#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 pull | docker image pull | 拉取镜像 |
| docker push | docker 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 (最后这个就是版本)

从docker hub查找镜像

docker search [options] TERM

参数:

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

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

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

8.5、docker logout

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

docker logout

相关推荐
汀、人工智能19 分钟前
修改Docker默认存储路径,解决系统盘占用90%+问题(修改docker root dir)
docker·容器
吃面不喝汤6644 分钟前
如何配置和使用自己的私有 Docker Registry
运维·docker·容器
Leighteen1 小时前
Docker常用命令
docker·容器
丶21361 小时前
【Nginx】在 Docker 上安装 Nginx 的详细指南
运维·nginx·docker
m0_741768858 小时前
使用docker的小例子
运维·docker·容器
最新小梦11 小时前
Docker日志管理
运维·docker·容器
ZHOU西口12 小时前
微服务实战系列之玩转Docker(十五)
nginx·docker·微服务·云原生·swarm·docker swarm·dockerui
lgbisha13 小时前
828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
低代码·docker·华为云
记得开心一点嘛13 小时前
在Linux系统上使用Docker部署javaweb项目
linux·运维·docker
Persistence is gold15 小时前
cassandra指定配置文件的docker启动方法
运维·docker·容器