Linux安装Docker详细教程

2023-05-16

文章目录

    • Docker架构
    • 环境说明
    • 安装步骤
    • 阿里云镜像加速
    • Docker底层原理

Docker架构

在这里插入图片描述

镜像(image):
Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。 就好似 Java 中的 类和对象,类就是镜像,容器就是对象

容器(container):
Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。
它可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)
和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

仓库(repository):

仓库(Repository)是集中存放镜像文件的场所。
仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓
库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云 等

需要正确的理解仓储/镜像/容器这几个概念 :

Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个
可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生
成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。
同一个 image 文件,可以生成多个同时运行的容器实例。
image 文件生成的容器实例,本身也是一个文件,称为镜像文件。
一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,
也就是我们的容器至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库中拉下来就可以了。

环境说明

我们使用的是 CentOS 7 (64-bit)
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

查看自己的内核:

uname -r #打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)

结果如下

3.10.0-1062.12.1.el7.x86_64

查看版本信息:

cat /etc/os-release

结果如下

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

安装步骤

官网安装参考手册:https://docs.docker.com/engine/install/centos/
确定你是CentOS7及以上版本,我们已经做过了
yum安装gcc相关环境(需要确保 虚拟机可以上外网 )

yum -y install gcc
yum -y install gcc-c++

卸载旧版本

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

安装需要的软件包

yum install -y yum-utils 

设置镜像仓库

# 错误
yum-config-manager --add-repo
https://download.docker.com/linux/centos/docker-ce.repo
## 报错
[Errno 14] curl#35 - TCP connection reset by peer
[Errno 12] curl#35 - Timeout
# 正确推荐使用国内的
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-
ce/linux/centos/docker-ce.repo

更新yum软件包索引

yum makecache fast

安装 Docker CE

yum install docker-ce docker-ce-cli containerd.io 

启动 Docker

systemctl start docker

测试命令

docker version
docker run hello-world
docker images

卸载

systemctl stop docker
yum -y remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker

阿里云镜像加速

介绍:https://www.aliyun.com/product/acr

  • 注册一个属于自己的阿里云账户(可复用淘宝账号)
  • 进入管理控制台设置密码,开通
  • 查看镜像加速器自己的

在这里插入图片描述

配置镜像加速

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

测试启动HelloWorld

docker run hello-world

docker run干了什么

在这里插入图片描述

Docker底层原理

Docker是怎么工作的

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户
端访问,守护进程从客户端接受命令并管理运行在主机上的容器。 容器,是一个运行时环境,就是我们前面说到的集装箱。

在这里插入图片描述

为什么Docker比较 VM 快

docker有着比虚拟机更少的抽象层。由亍docker不需要Hypervisor实现硬件资源虚拟化,运行在
docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在
效率上有明显优势。
docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机
一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建
一个虚拟机时,虚拟机软件需要加载Guest OS,返个新建过程是分钟级别的。而docker由于直接利用宿主
机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。

在这里插入图片描述
虚拟机与docker容器比较
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux安装Docker详细教程 的相关文章

  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • GMail 421 4.7.0 稍后重试,关闭连接

    我试图找出为什么它无法使用 GMail 从我的服务器发送邮件 为此 我使用 SwiftMailer 但我可以将问题包含在以下独立代码中
  • 无法从外部访问在端口 4567 上的 Docker 容器中运行的应用程序

    使用重新创建设置所需的所有文件更新帖子 还是同样的问题 无法访问容器中运行的服务 FROM python 3 RUN apt get update RUN apt get install y ruby rubygems RUN gem in
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • 为什么 fopen("any_path_name",'r') 不给出 NULL 作为返回值?

    在调试一些代码时 我得到如下内容 include
  • 使用 shell 脚本将行附加到 /etc/hosts 文件

    我有一个新的 Ubuntu 12 04 VPS 我正在尝试编写一个安装脚本来完成整个 LAMP 安装 我遇到问题的地方是在 etc hosts文件 我当前的主机文件如下所示 127 0 0 1 localhost Venus The fol
  • 诊断“功能主机未运行。”在码头工人

    我正在尝试将几个基于 dotnet 的功能应用程序 v3 迁移到 docker 容器 为此 我们使用来自mcr microsoft com azure functions dotnet https hub docker com micros
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 使用包管理器时如何管理 Perl 模块?

    A 最近的问题 https stackoverflow com questions 397817 unable to find perl modules in intrepid ibex ubuntu这让我开始思考 在我尝试过的大多数 Li
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • docker 构建失败,无法解析“archive.ubuntu.com”

    我无法使用以下 Dockerfile 构建映像 FROM ubuntu RUN apt get y update apt get y install nodejs npm ssh cache npm install when package
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • 使用外部存储,删除文件夹时出错

    我正在使用 docker nextcloud 我创建了一个干净的实例 我想使用应用程序外部存储 我设法使用以下命令成功配置本地存储 mount id docker exec user 1000 nextcloud php occ files
  • cdc_acm:无法设置 dtr/rts - 无法与 USB cdc 设备通信

    我试图使用 pic24fj128gb206 枚举 usb cdc 设备 设备似乎已正确枚举 但是当我将设备连接到 Linux PC 时 我从内核收到以下警告消息 cdc acm 1 8 1 6 7 1 0 failed to set dtr
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • docker-compose 将镜像推送到 aws ecr

    是否可以让 docker compose 构建镜像并将其推送到远程存储库 现在我做的是 docker compose 然后我做 docker compose config services 循环遍历名称重建图像名称和标签 然后执行 dock

随机推荐

  • Java中a++与++a的理解

    在编程中我们都熟知 a 43 43 和 43 43 a 两者都是原来的值自身 43 1 xff0c 只不过是前者先进行值得使用再 43 1 xff0c 后者先进行 43 1再使用新的值 xff0c 如下 xff1a int a 61 1 i
  • 面试那些事(一)

    最近裸辞了 xff0c 就觉得解脱了好嗨哦 xff01 终于不要再看到领导丑恶的嘴脸 xff01 终于可以不要再逼着加班啦 xff01 终于周末可以好好的睡一觉了 xff01 本来计划的是找好之后再离职 可是发现根本就没时间去准备 xff0
  • 能ping通,不能ssh登录

    宿主机 ping VMware Linux虚拟机能通 xff0c 但是不能ssh登录 当你试了所有方法都不行时 xff0c linux主机网卡改一个IP地址就好了 xff0c 例如10 0 0 1 10 0 0 2 原因是 Linux网卡
  • docker安装软件时出现:报错:E: You don‘t have enough free space in /var/cache/apt/archives/.

    背景 xff1a 在linux系统下安装了一个docker容器 xff0c 拉取一个debian系统后在系统里使用apt get install进行安装文件 问题 xff1a 报错 xff1a E You don 39 t have eno
  • C语言总结

    1 简述C C语言不但执行效率高而且可移植性好 xff0c 可以用来开发应用软件 驱动 操作系统等 2 第一个C程序 include lt stdio h gt int main printf 34 Hello World 34 retur
  • VNC 1.1 窗口大小修改

    编辑vncserver 文件 vi usr bin vncserver 找到 geometry 61 34 1024x768 34 按 i 修改 按 wq 保存 重启vnc服务即可 PS 不会重启只能一一kill 掉 vncserver k
  • 《Java核心技术》卷1——学习笔记(1)

    第三章的基本语法 1 类名命名规范为骆驼命名法 xff0c 即首字母大写 2 源代码为 java文件 xff0c 编译后字节码文件为 class 控制台先用javac name java命令编译源文件 xff0c 然后用java name运
  • Ubuntu 18.04 install docker-ce(community)

    Ubuntu 18 04 install docker ce community 1 Older versions of Docker were called docker docker io or docker engine If the
  • 三维模型特征提取方法概述

    点击上方 计算机视觉工坊 xff0c 选择 星标 干货第一时间送达 作者I 开拓者5号 64 CSDN 编辑I 3D视觉开发者社区 一 三维特征提取概述 三维特征提取是模式识别中最基本的研究内容之一 xff0c 可以有效地缓解模式识别领域经
  • webpack入门到进阶(七)- devtool

    webpack配置devtool 此选项控制是否生成 xff0c 以及如何生成 source map 一 xff0c 为什么要控制source map的生成 xff1f 我们在开发的过程中 xff0c 难免会遇到项目运行的报错信息 xff0
  • Unix Shell编程——将命令输出结果保存到变量中

    将命令输出结果保存到变量中 文章引用 xff1a http blog csdn net csfreebird article details 7978699 reply xff11 xff0e 两种实现语法 var 61 命令 var 61
  • 真-全局代理原理细谈

    全局代理 以下讨论仅针对windows 起因 最近有个朋友问我当我们的代理软件 xff08 v2rayn xff09 设置成全局代理后 比如自己写的java程序会不会受代理的影响 扩展一下也可以理解成这里的全局代理是不是真的是全局的 探究
  • 跨窗口浏览器通信方式实现交互

    1 需求背景 新老系统交互 xff0c 从新系统页面跳转到老系统页面后 xff0c 老系统页面关闭 xff0c 新系统页面需要同步刷新 2 1 1 解决方案 1 老系统代码使用window opener实现窗口通信 var msgData
  • 《Reinforcement Learning: An Introduction》强化学习导论原文翻译17.1 广义价值函数和辅助任务

    在本书的过程中 xff0c 我们的价值函数概念变得非常普遍 在异策略 xff08 off policy xff09 学习中 xff0c 我们允许在任意目标策略下定义价值函数 然后在12 8节中 xff0c 我们将折扣一般化为终止函数 xff
  • Cannot load command parameter [robot_description]解决方法

    在github上下载一个ros仿真小车 xff0c 运行时 Invalid tag Invalid tag Cannot load command parameter robot description 参考 https wiki ros
  • 【解决】cannot connect to X server

    该问题常出现在Linux跑程序时 xff0c 含图像处理的程序中 这个原因是 xff1a X server是Linux系统上提供图形用户界面的服务程序 当客户端主机Client访问服务器Server上的图形程序时 xff0c 需要Serve
  • 匹配问题: 匈牙利算法 、最优指派、相等子图、库恩—曼克莱斯 (Kuhn-Munkres) 算法

    图 amp 网络系列博文 xff1a 1 图与网络模型及方法 xff1a 图与网络的基本概念 2 图 amp 网络模型应用 最短路径问题 3 树 xff1a 基本概念与最小生成树 4 匹配问题 xff1a 匈牙利算法 最优指派 相等子图 5
  • JavaEE之 IntelliJ IDEA +Tomcat配置JavaEE开发环境

    一 xff0c Tomcat的下载安装 xff1a 1 1 官方下载地址 xff1a https tomcat apache org 尽量选择exe程序安装 xff0c 压缩包第一次没启动起来 xff0c 而且tomcat11版本老是提示版
  • 树莓派VNC连接失败,认证界面无法输入用户名

    文章目录 问题背景思考 xff1a 解决方法 xff1a 第一步 xff1a 使用命令新建桌面 xff1a 第二步 xff1a vnc客户端连接时 xff0c 并且指定桌面号连接成功 xff01 优化方案 xff1a 参考引用 问题背景 由
  • Linux安装Docker详细教程

    文章目录 Docker架构环境说明安装步骤阿里云镜像加速Docker底层原理 Docker架构 镜像 xff08 image xff09 Docker 镜像 xff08 Image xff09 就是一个只读的模板 镜像可以用来创建 Dock