Docker 入门文档阅读笔记

Docker 的架构

Docker 客户端服务器架构

图片来自 Docker 官网教程

Docker 采用 CS 架构, 可以通过 CLIAPI 与 Docker daemon 进行交互。

Docker Objects

Images (镜像)

An image is a read-only template with instructions for creating a Docker container. Often, an image is based on another image, with some additional customization.

You might create your own images or you might only use those created by others and published in a registry. To build your own image, you create a Dockerfile with a simple syntax for defining the steps needed to create the image and run it. Each instruction in a Dockerfile creates a layer in the image. When you change the Dockerfile and rebuild the image, only those layers which have changed are rebuilt. This is part of what makes images so lightweight, small, and fast, when compared to other virtualization technologies.

Container (容器)

A container is a runnable instance of an image. You can connect a container to one or more networks, attach storage to it, or even create a new image based on its current state.

By default, a container is relatively well isolated from other containers and its host machine. You can control how isolated a container's network, storage, or other underlying subsystems are from other containers or from the host machine.

容器运行例子

运行如下命令:

docker run -i -t ubuntu /bin/bash

运行过程解析:

When you run this command, the following happens (assuming you are using the default registry configuration):

  1. If you don't have the ubuntu image locally, Docker pulls it from your configured registry, as though you had run docker pull ubuntu manually.

  2. Docker creates a new container, as though you had run a docker container create command manually.

  3. Docker allocates a read-write filesystem to the container, as its final layer(在最终层,创建可读写的文件系统). This allows a running container to create or modify files and directories in its local filesystem.

  4. Docker creates a network interface to connect the container to the default network, since you didn't specify any networking options. This includes assigning an IP address to the container. By default, containers can connect to external networks using the host machine's network connection.

  5. Docker starts the container and executes /bin/bash. Because the container is running interactively and attached to your terminal (due to the -i and -t flags), you can provide input using your keyboard while Docker logs the output to your terminal.

  6. When you run exit to terminate the /bin/bash command, the container stops but isn't removed. You can start it again or remove it.

docker run 的选项说明:

  • -i, --interactive:交互模式,Keep STDIN open even if not attached
  • -t, --tty:Allocate a pseudo-TTY
  • -a, --attach:Attach to STDIN, STDOUT or STDERR
  • -d, --detach:在后台运行容器并返回容器 ID

The underlying technology (基于的技术 namespaces )

Docker is written in the Go programming language and takes advantage of several features of the Linux kernel to deliver its functionality. Docker uses a technology called namespaces to provide the isolated workspace called the container. When you run a container, Docker creates a set of namespaces for that container.

These namespaces provide a layer of isolation. Each aspect of a container runs in a separate namespace and its access is limited to that namespace.

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

顶尖待办事项软件对比:找到你的最佳匹配

国内外主流的10款待办事项管理软件对比:PingCode、WorktileTodoist、TickTick、Teambition、 Microsoft To Do、. Asana、Tower、番茄ToDo、飞书。在面对日益复杂的工作和个人任务时,找到一款能够有效帮助你管理日常待办事项的软件,变得越来越重要。无论是在提高个人生产力,…

Oracle RAC 集群启动顺序 转发:https://www.modb.pro/db/1824295923545612288?utm_source=index_ori

前言 前几天使用脚本在 RockyLinux 9.4 安装 Oracle 11GR2 RAC,安装完之后发现集群无法正常启动,后经过分析发现原来是因为 RHEL9 版本默认安装移除了 initscripts 软件包,需要人为手动安装,在 RHEL8 之前是默认安装的。 在分析问题的过程中,顺便对 Oracle RAC 集群启动顺…

SHELL之数值运算

【四则运算符号】表达式 举例$(( )) echo $((1+1))$[ ] echo $[10-5]expr expr 10 / 5 (运算符左右有空格)let n=1;let n+=1 等价于 let n=n+1一、整数运算 1、基本运算类别加法:+ 减法:- 乘法:* 整除:/ 取余数:%2、expr运算工具加法:+ 减法:- 乘法:* 整除:/ 取余数…

FIFO读数取数

FIFO:先进先出的缓存器。常应用于带宽不同或者跨时钟域等数据传输情况。 相关参数:数据宽度,存储深度,将空标志位。空标志位。将满标志位,满标志位。读写时钟。其中将满信号与将空信号相较于真正的满信号与空信号都会提前一个时钟周期拉高。FIFO generator配置注意事项:B…

如何使用midjourney?MidJourney订阅计划及国内订阅教程

MidJourney订阅计划 MidJourney提供四种不同的订阅计划:订阅计划 每月费用 年度费用 使用限制基础计划 $10/月 $96/年($8/月) 每月可生成200张图,无fast模式,不能免排队生成图标准计划 $30/月 $288/年($24/月) 每月可无限量生成图片,15小时fast模式,免排队生成图,有隐…

寻访中国100家.NET中大企业 —— 第二站:苏州行

一:事情起因 在.NET圈里混了十多年,相信有不少人知道我专注于玩 .NET高级调试,如今技术上的硬实力还是能够解决市面上的一些疑难杂症,但软实力却在另一个极端,如(人际交往,人情事故),所以就萌生了刻意训练的念头,便自我发起了这个活动 "寻访中国100家.NET中大企…

7zip如何使带中文的文件名以utf-8编码?

问题: 在win 上压缩中文模版文件后,在Linux 上解压乱码 解决方案: 7-zip压缩的zip文件里面带有中文文件名的,在其他平台上解压后中文文件名乱码。在网上查找了下资料,使用7-zip压缩zip文件,可以使用参数cu=on,强制文件名以utf-8格式编码,在其他平台上解压后正常。 下图…

Windows 10、Windows 11 配置 gradle8

Windows 10、Windows 11 配置 gradle8GRADLE_HOME=D:\development\gradle\gradle-8.8GRADLE_USER_HOME=D:\\repository\\gradle-repository%GRADLE_HOME%\bin

windows环境Jenkins部署前端项目

在Windows环境下使用Jenkins部署前端项目,可以按照以下步骤进行: 1. 安装Jenkins可以从Jenkins官网下载Windows版本的Jenkins安装包。 安装完成后,启动Jenkins服务,并通过浏览器访问 http://localhost:8080 进入Jenkins管理界面。 windows环境Jenkins部署前端项目2. 配置Je…

提升认知:解锁成功之门的钥匙——实践、交流与阅读的力量

​ 认知,这个看似抽象的概念,实则是我们理解世界、做出决策的基石。它如同种子,孕育着思维的花朵,最终结出行为的果实,影响着我们生活的方方面面。我们所赚取的每一分钱,都是对这个世界认知的直接体现。当我们的认知深刻,我们能够洞察事物的本质,把握机遇,从而获得相应…

短URL服务设计

引言 在营销系统里,为了增加系统的活跃用户数,经常会有各种各样的营销活动。这类活动几乎都是为了充分利用存量用户的价值,促使他们分享产品或App以达到触达到更多用户的目的。又或者是出于营销目的,群发优惠券触达短信这种场景。 分享App活动页(或其他各种页面)时URL一般…

.NET 9 优化,抢先体验 C# 13 新特性

前言 微软即将在 2024年11月12日发布 .NET 9 的最终版本,而08月09日发布的.NET 9 Preview 7 是最终发布前的最后一个预览版。这个版本将与.NET Conf 2024一同亮相,并已与 Visual Studio 2022 17.12 预览版1一同发布,可以直接通过Visual Studio安装。同时Visual Studio Code …