MacOS Docker 安装和运行原理

news2024/9/27 12:12:44

本文讲述主要是基于Mac电脑安装教程,使用的是homebrew安装,未安装homebrew的请先自行安装下

一、使用 Homebrew 安装

macOS 我们可以使用 Homebrew 来安装 Docker。Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装。

1. 输入安装命令如下:

brew install --cask --appdir=/Applications docker  # 1.输入安装命令

==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password:          # 2.输入你的macOS 密码
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
#################################################################### 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺  docker was successfully installed!

最后如果提示了successfully installed! 字样就表示安装成功了

2. 安装完毕后,从应用中找到Docker 图标点击运行。可能会询问 macOS 登陆密码,输入即可

3. 打开终端,输入命令显示docker的版本信息

wpf@B-L0Q0JHD2-2029 ~ % docker --version  # 1.该命令仅显示安装版本
Docker version 20.10.22, build 3a2c30b

wpf@B-L0Q0JHD2-2029 ~ % docker version    # 2.该命令显示docker具体版本信息
Client:  # 客户端信息
 Cloud integration: v1.0.29
 Version:           20.10.22
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        3a2c30b
 Built:             Thu Dec 15 22:28:41 2022
 OS/Arch:           darwin/amd64
 Context:           default
 Experimental:      true

Server: Docker Desktop 4.16.1 (95567) # 服务器信息
 Engine:
  Version:          20.10.22
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       42c8b31
  Built:            Thu Dec 15 22:26:14 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.14
  GitCommit:        9ba4b250366a5ddde94bb7c9d1def331423aa323
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
wpf@B-L0Q0JHD2-2029 ~ % 

 4. 试运行docker,使用docker run 运行 hello-world镜像

  1. doker 拉取hello-world镜像:docker pull hello-world
  2. 运行拉取hello-world镜像:docker run hello-world

译:当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

wpf@B-L0Q0JHD2-2029 ~ % docker run hello-world # 运行hello-world
Unable to find image 'hello-world:latest' locally  # 提示未找到hello-world镜像
latest: Pulling from library/hello-world # 尝试拉取远程官方library下的h-w镜像
2db29710123e: Pull complete  # 拉取完毕了,后面是签名信息
Digest: sha256:aa0cc8055b82dc2509bed2e19b275c8f463506616377219d9642221ab53cf9fe
Status: Downloaded newer image for hello-world:latest

Hello from Docker!  # 显示这句话说明docker安装成功了
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

wpf@B-L0Q0JHD2-2029 ~ % 

5. 我们可以使用 docker images 命令来列出本地主机上的镜像。

或者直接打开Docker Desktop应用 

 

二、Docker底层运行原理

docker 是一个c/s结构的系统(client客户端/server服务端)。

Docker的守护进程运行在宿主主机上,通过socket从客户端访问。DockerServer 接收到 Docker-Client的指令,就会执行这个指令。

Docker会以root权限运行它的守护进程,来处理普通Linux用户无法完成的操作(如挂载文件系统等操作)

说明:8080和3306两个容器外部是访问不到的,是属于容器内的,容器就好比一个小的虚拟机,容器之间互相隔离;容器与外部大的Linux服务器也是互相隔离的,一个容器占用的进程资源是非常小的

Docker执行run命令的流程如下:

  1. Dockers引擎会在本地查找镜像
  2. 本地找到镜像 然后启动镜像
  3. 本地未找到镜像,然后根据Docker引擎配置的仓库地址,远程去查找镜像。
  4. 远程查询到镜像,把镜像下载到本地,然后启动镜像
  5. 远程查询到镜像,Docker返回错误,提示镜像远程未找到。
  6. 运行中的镜像支持:停止、启动、重启、删除(先停止才可以删除)操作。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【代码实验】CNN实验——利用Imagenet子集训练分类网络(AlexNet/ResNet)

文章目录前言一、数据准备二、训练三、结果前言 Imagenet是计算机视觉的经典分类比赛,但是Imagenet数据集本身太大了,我们穷学生没有这么大的算力,2016年google DeepMind团队从Imagnet数据集中抽取的一小部分(大小约3GB&#xff…

DBCO-PEG-Methacrylate_DBCO-PEG-MA_二苯并环辛炔-PEG-甲基丙烯酸酯

一、试剂基团反应特点(Reagent group reaction characteristics):DBCO(二苯并环辛炔)是一种环炔烃,可以通过在水溶液中通过应变促进的1,3-偶极环加成反应与叠氮化物反应,这种生物正交反应也称为…

Crack:MindFusion.Diagramming for ASP.NET V7.0

MindFusion.Diagramming for ASP.NET V7.0 MindFusion.Diagramming for ASP.NET 为 Web 应用程序提供图表功能。它包括丰富的预定义图表节点以及具有无限行数和列数的表节点。您可以在容器中组织节点,形状设计器 UI 工具可帮助您快速轻松地生成自己的图表节点。 添加…

GD32F450工程模板创建

一、新建工程目录 序号文件夹备注1Project存放工程文件,编译文件等。2Firmware存放ARM内核文件,标准外设库文件等。3Hardware存放开发板的硬件驱动文件。4App存放应用层文件。5User存放main函数,gd32f4xx_it文件,systick文件。6D…

【GD32F427开发板试用】07-硬件SPI驱动0.96LCD

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:Stark_GS SPI 简介及特点 具有全双工、半双工和单工模式的主从操作。16位宽度,独立的发送和接收缓冲区。8位或16位数据帧格式。低…

火出圈的《中国奇谭》,如果浪浪山的小妖怪们也用WorkPlus

你会被一只小妖怪感动到破防吗? 最近,由上海美术电影制片厂和B站联合推出的动画片《中国奇谭》火了,仅仅一上线就被打出9.9的高分,频繁登上微博热搜。 其中,第一集《小妖怪的夏天》取材自《西游记》,却从…

Unity编辑器右键菜单实现多平台游戏资源打包—AssetBundle的构建

文章目录👉一、初识AssetBundle👉二、创建AssetBundle👉三、动手操作:实现右键菜单打包AssetBundle👉一、初识AssetBundle AssetBundle是Unity提供的一种打包资源的文件格式,比如模型、纹理和音频文件等的各…

大数据导论

数据是什么数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合,它是可识别的、抽象的符号。它不仅指狭义上的数字,还可以是具有一定意义的文字、字母、数字符号的组…

python学习 --- 元组基础

目录 一、什么是元组 1、不可变序列和可变序列 2、元组 二、 元组的创建方式 1、小括号(可省略) 2、内置函数tuple() 三、元组的获取与遍历 1、元组的获取 2、元组的遍历 一、什么是元组 1、不可变序列和可变序列 不可变序列:没有增…

使用streamlit记录

官方网址:https://docs.streamlit.io/ 官方网址:https://discuss.streamlit.io/t/streamlit-components-community-tracker/4634 官方网址:https://github.com/streamlit/streamlit 第三方插件网址:https://github.com/arnaudmiri…

Solidity 中的数学(第 2 部分:溢出)

本文是关于在 Solidity 中进行数学运算的系列文章中的第二篇。这次的主题是:溢出。 介绍 每次我看到、*或**审计另一个 Solidity 智能合约时,我都会开始写以下评论:“这里可能会溢出”。我需要几秒钟来写这四个字,在这几秒钟内&a…

【Pandas】18 小练习

#【Pandas】18 小练习 2023.1.16 两个pandas小练习 18.1 疫情数据分析 18.1.1 观察数据 import pandas as pd import osdf pd.read_csv("data/covid19_day_wise.csv") dfDateConfirmedDeathsRecoveredActiveNew casesNew deathsNew recoveredDeaths / 100 CasesR…

日常渗透刷洞的一些小工具

SecurityServiceBox:一个Windows平台下既可以满足安服仔日常渗透工作也可以批量刷洞的工具盒子 0x00 更新题外话—终端选取 在盒子的tools当中,很多工具运行都是带有颜色标识的,例如nuclei, vulmap,原生的cmd终端虽然…

MD5有哪些特性,常用的MD5加密真的安全吗

在密码学中,MD5是比较常用的算法之一。大家都知道MD5曾一度被认为十分安全,并且在国内外得到广泛适用。然而,王小云教授的研究证明利用MD5算法的磕碰能够严重威胁信息体系安全,因此引发了密码学界的轩然大波。那么,关于…

为什么JDK中String类的indexof不使用KMP或者Boyer-Moore等时间复杂度低的算法编辑器

indexOf底层使用的方法是典型的BF算法。 1、KMP算法 由来 外国人: Knuth,Morris和Pratt发明了这个算法,然后取它三个的首字母进行了命名。所以叫做KMP。 KMP真的很难理解,建议多看几遍 B站代码随想录,文章也的再好 …

【蓝桥杯备赛系列 | 真题 | 简单题】2014年第五届真题-分糖果

🤵‍♂️ 个人主页: 计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 蓝桥杯竞赛专栏 | 简单题系列 (一) 作者: 计算机魔术师 版本: 1.0 &#xff08…

【博客597】iptables如何借助连续内存块通过xt_table结构管理流量规则

iptables如何借助连续内存块通过xt_table结构管理流量规则 1、iptables 分为两部分: 用户空间的 iptables 命令向用户提供访问内核 iptables 模块的管理界面。内核空间的 iptables 模块在内存中维护规则表,实现表的创建及注册。 2、iptables如何管理众…

第十二章 数据库设计

前言 本文章为看视频所写。 视频链接:168. 14.1 数据库设计前言_哔哩哔哩_bilibili 目录 前言 章节提要 一、数据库设计过程 二、E-R模型 三、答题技巧 四、案例分析 1、案例1 二、案例2 章节提要 一、数据库设计过程 ER模型:是实体联系模型&#x…

第一章 数据结构绪论

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间关系和操作等相关问题的学科。程序设计数据结构算法数据:是描述客观事物的符号,是计算机中可…

2.2、进程的状态与转换

整体框架 1、三种基本状态 进程是程序的一次执行。在这个执行过程中,有时进程正在被 CPU 处理,有时又需要等待 CPU 服务, 可见进程的状态是会有各种变化。 为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态 ①…