Compare commits

...

12 Commits

18 changed files with 696 additions and 89 deletions

8
.idea/.gitignore vendored
View File

@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/../../../../../../:\WorkDir\Repository\cwiki-us-docs\docker-docs\.idea/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

16
.idea/checkstyle-idea.xml Normal file
View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CheckStyle-IDEA" serialisationVersion="2">
<checkstyleVersion>10.15.0</checkstyleVersion>
<scanScope>JavaOnly</scanScope>
<copyLibs>true</copyLibs>
<option name="thirdPartyClasspath" />
<option name="activeLocationIds" />
<option name="locations">
<list>
<ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">(bundled)</ConfigurationLocation>
<ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">(bundled)</ConfigurationLocation>
</list>
</option>
</component>
</project>

View File

@ -1,7 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<ScalaCodeStyleSettings>
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
</ScalaCodeStyleSettings>
</code_scheme>
</component>

View File

@ -1,5 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

View File

@ -1,6 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ComposerSettings">
<execution />
</component>
<component name="ProjectRootManager">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="ThriftCompiler">
<compilers />
</component>
</project>

View File

@ -2,7 +2,7 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/docker-docs.iml" filepath="$PROJECT_DIR$/docker-docs.iml" />
<module fileurl="file://$PROJECT_DIR$/Docker-Docs.iml" filepath="$PROJECT_DIR$/Docker-Docs.iml" />
</modules>
</component>
</project>

176
.idea/workspace.xml Normal file
View File

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="6feae4b4-04c8-43aa-ae29-e763a7d96450" name="Changes" comment="更新文章链接">
<change beforePath="$PROJECT_DIR$/in-action/os-image/busybox.md" beforeDir="false" afterPath="$PROJECT_DIR$/in-action/os-image/busybox.md" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_BRANCH_BY_REPOSITORY">
<map>
<entry key="$PROJECT_DIR$" value="main" />
</map>
</option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 3
}</component>
<component name="ProjectId" id="2gKaeANiDO8nFz0SAeg0BkM06VN" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"RunOnceActivity.ShowReadmeOnStart": "true",
"git-widget-placeholder": "main",
"ignore.virus.scanning.warn.message": "true",
"kotlin-language-version-configured": "true",
"last_opened_file_path": "D:/WorkDir/Repository/iSharkfly-Docs/Docker-Docs/in-action/os-image",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"vue.rearranger.settings.migration": "true"
}
}]]></component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\WorkDir\Repository\iSharkfly-Docs\Docker-Docs\in-action\os-image" />
<recent name="D:\WorkDir\Repository\iSharkfly-Docs\Docker-Docs\in-action" />
</key>
</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-jdk-9f38398b9061-18abd8497189-intellij.indexing.shared.core-IU-241.14494.240" />
</set>
</attachedChunks>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="6feae4b4-04c8-43aa-ae29-e763a7d96450" name="Changes" comment="" />
<created>1715448815955</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1715448815955</updated>
<workItem from="1715448817039" duration="5739000" />
</task>
<task id="LOCAL-00001" summary="对项目进行重新规范化使用域名docker-docs.isharkfly.com 提供服务">
<option name="closed" value="true" />
<created>1715449016131</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1715449016131</updated>
</task>
<task id="LOCAL-00002" summary="更新使用新版本的样式表和文档标题名称">
<option name="closed" value="true" />
<created>1715450024760</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
<option name="project" value="LOCAL" />
<updated>1715450024760</updated>
</task>
<task id="LOCAL-00003" summary="添加自述文件和边栏">
<option name="closed" value="true" />
<created>1715450471590</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1715450471590</updated>
</task>
<task id="LOCAL-00004" summary="更新文档名">
<option name="closed" value="true" />
<created>1715450545744</created>
<option name="number" value="00004" />
<option name="presentableId" value="LOCAL-00004" />
<option name="project" value="LOCAL" />
<updated>1715450545744</updated>
</task>
<task id="LOCAL-00005" summary="对文档说明进行处理">
<option name="closed" value="true" />
<created>1715451060896</created>
<option name="number" value="00005" />
<option name="presentableId" value="LOCAL-00005" />
<option name="project" value="LOCAL" />
<updated>1715451060896</updated>
</task>
<task id="LOCAL-00006" summary="对文档说明进行处理">
<option name="closed" value="true" />
<created>1715451627842</created>
<option name="number" value="00006" />
<option name="presentableId" value="LOCAL-00006" />
<option name="project" value="LOCAL" />
<updated>1715451627842</updated>
</task>
<task id="LOCAL-00007" summary="更新联系方式">
<option name="closed" value="true" />
<created>1715451876766</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1715451876766</updated>
</task>
<task id="LOCAL-00008" summary="更新 Docker — 从入门到实践 的链接">
<option name="closed" value="true" />
<created>1715461019786</created>
<option name="number" value="00008" />
<option name="presentableId" value="LOCAL-00008" />
<option name="project" value="LOCAL" />
<updated>1715461019786</updated>
</task>
<task id="LOCAL-00009" summary="更新操作系统镜像部分的链接">
<option name="closed" value="true" />
<created>1715525713916</created>
<option name="number" value="00009" />
<option name="presentableId" value="LOCAL-00009" />
<option name="project" value="LOCAL" />
<updated>1715525713916</updated>
</task>
<task id="LOCAL-00010" summary="更新 busybox 文章">
<option name="closed" value="true" />
<created>1715530355651</created>
<option name="number" value="00010" />
<option name="presentableId" value="LOCAL-00010" />
<option name="project" value="LOCAL" />
<updated>1715530355651</updated>
</task>
<task id="LOCAL-00011" summary="更新文章链接">
<option name="closed" value="true" />
<created>1715530393746</created>
<option name="number" value="00011" />
<option name="presentableId" value="LOCAL-00011" />
<option name="project" value="LOCAL" />
<updated>1715530393746</updated>
</task>
<option name="localTasksCounter" value="12" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="对项目进行重新规范化使用域名docker-docs.isharkfly.com 提供服务" />
<MESSAGE value="更新使用新版本的样式表和文档标题名称" />
<MESSAGE value="添加自述文件和边栏" />
<MESSAGE value="更新文档名" />
<MESSAGE value="对文档说明进行处理" />
<MESSAGE value="更新联系方式" />
<MESSAGE value="更新 Docker — 从入门到实践 的链接" />
<MESSAGE value="更新操作系统镜像部分的链接" />
<MESSAGE value="更新 busybox 文章" />
<MESSAGE value="更新文章链接" />
<option name="LAST_COMMIT_MESSAGE" value="更新文章链接" />
</component>
</project>

2
CNAME
View File

@ -1 +1 @@
docker-docs.ossez.com
docker-docs.isharkfly.com

39
CONTACT.md Normal file
View File

@ -0,0 +1,39 @@
# 联系方式
请使用下面的联系方式和我们联系:
| 联系方式名称 | 联系方式 |
|--------|-----------------------------------------------|
| 电子邮件 | [service@ossez.com](mailto:service@ossez.com) |
| QQ 或微信 | 103899765 |
| 社区论坛 | https://www.isharkfly.com/ |
## 公众平台
我们建议您通过社区论坛来和我们进行沟通,请关注我们公众平台上的账号。
### 微信公众号
![](https://cdn.ossez.com/img/cwikius/cwikius-qr-wechat-search-w400.png )
### 头条号
![](https://cdn.ossez.com/img/cwikius/cwikus-qr-toutiao.png)
### 百家号
![](https://cdn.ossez.com/img/sharkfly/baidu/baidu-qr.jpg)
### 知乎
https://www.zhihu.com/people/huyuchengus
##SS 快速导航
在下面的表格中,我们列出了一些比较有用的 CWIKIUS 相关软件开发使用教程的导航,欢迎访问下面的链接获得更多的内容和参与讨论
| 网站名称 | URL | NOTE |
|--------------------|----------------------------------------------------------------|---------------------------------|
| iSharkFly KB | [track.ossez.com/articles](https://track.ossez.com/articles) | 基于 YouTrack 部署的 KB 和 Issue 跟踪系统 |
| DOCS.ISHARKFLY.COM | [https://docs.isharkfly.com/#/](https://docs.isharkfly.com/#/) | 本手册的编译版本将会部署在这个链接上 |
| CN 博客 | [http://www.cwikius.cn/](http://www.cwikius.cn/) | CWIKIUS.CN 一个有独立思考和温度的清新站 |

107
README.md
View File

@ -1,49 +1,78 @@
# CWIKIUS Docker 文档和手册
# iSharkFly Docker 文档和手册
欢迎来到 CWIKIUS Docker 文档和手册的空间
iSharkFly Docker 文档和手册,使用 docsify 来对 MD 文件进行编译和修改。
本文档的编译发布版本访问地址:[docker-docs.ossez.com](https://docker-docs.ossez.com)
因为最近项目的工作需要,要求使用 Docker 来对项目进行容器化。
CWIKIUS 的有关 Docker 相关文档:[https://www.cwiki.us/display/DockerZH/Docker](https://www.cwiki.us/display/DockerZH/Docker)
我们可能会用到项目中的一些有关的内容,因此特地整理的了一些相关的文档和翻译。
GitHub 上有关 CWIKIUS Docker 的项目的源代码文件:[https://github.com/cwiki-us-docs/docker-docs](https://github.com/cwiki-us-docs/docker-docs)
## Docker 是什么
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux
机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
### Docker的组成
一个完整的Docker有以下几个部分组成:
* docker Client客户端
* Docker Daemon守护进程
* Docker Image镜像
* Docker Container容器
我们通过客户端写命令,然后客户端将命令发送给守护进程,守护进程再将命令执行的结果返回给客户端,这就使我们能通过命令查看执行结果,镜像就是容器的源代码,容器通过镜像启动,使用仓库来保存用户构建的镜像,仓库分为共有和私有。
## 文档结构
本文档的编译发布版本访问地址:[docker-docs.isharkfly.com](https://docker-docs.isharkfly.com) (本 WIKI 中的内容将会与GitHub
中的源代码转换文件在线同步发布)。
iSharkFly鲨鱼君 有关 Docker
相关文档和讨论,请访问:[https://www.isharkfly.com/tags/c/computer-technology/system-and-container/25/docker](https://www.isharkfly.com/tags/c/computer-technology/system-and-container/25/docker)
GitHub 上有关 iSharkFly Docker
的项目的源代码文件:[https://github.com/iSharkFly-Docs/Docker-Docs](https://github.com/iSharkFly-Docs/Docker-Docs)
如果您有兴趣参与我们的小组和项目,请使用下面的联系方式和我们联系:
| 联系方式名称 | 联系方式 |
|---|---|
| 电子邮件 | [service@ossez.com](mailto:service@ossez.com) |
|--------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 电子邮件 | [yhu@ossez.com](mailto:yhu@ossez.com) |
| QQ 或微信 | 103899765 |
| QQ 交流群 Spring | 15186112 |
| 社区论坛 | [https://www.ossez.com/c/Toolkit-Algorithm-Computer-Science/system-and-container/25](https://www.ossez.com/c/Toolkit-Algorithm-Computer-Science/system-and-container/25) |
| 社区论坛 | [https://www.isharkfly.com/tags/c/computer-technology/system-and-container/25/docker](https://www.isharkfly.com/tags/c/computer-technology/system-and-container/25/docker) |
| iSharkFly KB | [track.ossez.com/articles](https://track.ossez.com/articles) |
## 微信及公众平台
我们建议您通过社区论坛来和我们进行沟通,请关注我们的微信公众号。
![](https://cdn.ossez.com/img/cwikius/cwikius-qr-wechat-search-w400.png)
## CWIKIUS 文档和手册快速导航
## 文档和手册快速导航
有关相关文档和我们参考过的一些内容的快速导航。
| 网站地址 | 网站链接 |
|---|---|
| CWIKIUS Docker Docs 在线文档 | https://docker-docs.ossez.com |
|--------------------------|----------------------------------------------|
| CWIKIUS Docker Docs 在线文档 | https://docker-docs.isharkfly.com |
| CWIKI.US 空间 | https://www.cwiki.us/display/DockerZH/Docker |
| Docker 官方文档 | https://docs.docker.com/ |
| chinese_docker | https://github.com/widuu/chinese_docker |
| daocloud.io | https://guide.daocloud.io/#all-updates |
| Docker — 从入门到实践 | https://yeasy.gitbook.io/docker_practice |
欢迎来到 Docker 文档的代码仓库。本代码仓库是文档 https://docs.docker.com 的源代码。
如果你发现这个文档有任何问题Docker 官方欢迎你来创建 合并请求Pull Requests。Docker 的文档是完全开源的Docker 官方也非常感谢社区对 Docker 的贡献。
如果你发现这个文档有任何问题Docker 官方欢迎你来创建 合并请求Pull Requests。Docker 的文档是完全开源的Docker 官方也非常感谢社区对
Docker 的贡献。
## 提供反馈
Docker 的官方和 CWIKIUS 都非常欢迎您对我们的内容进行反馈,并且我们将这个提供反馈的方法进行了调整,以便于更好的进行访问和提交。你可以对页面进行编辑或者针对 https://docs.docker.com 上每一个页面的右上角提供的链接来对内容进行编辑和提交合并请求。
Docker 的官方和 iSharkFly
都非常欢迎您对我们的内容进行反馈,并且我们将这个提供反馈的方法进行了调整,以便于更好的进行访问和提交。你可以对页面进行编辑或者针对 https://docs.docker.com
上每一个页面的右上角提供的链接来对内容进行编辑和提交合并请求。
你也可以对每一个页面来进行评分,评分的链接在页面的页脚。
**本仓库只针对文档的内容进行修改。** 如果你考虑对文档进行修改的话,在提交 PR 之前你应该先考虑下这个问题应该是和文档相关的,比如说文档描述的不清楚,文档出现了错误,或者在文档让用户非常困惑等。
**本仓库只针对文档的内容进行修改。** 如果你考虑对文档进行修改的话,在提交 PR
之前你应该先考虑下这个问题应该是和文档相关的,比如说文档描述的不清楚,文档出现了错误,或者在文档让用户非常困惑等。
* 如果你在使用 Docker 的时候遇到了问题,请访问 https://forums.docker.com 论坛中的内容。
* 如果针对 Docker 的新功能和特性有什么更好的建议或者你找到了 Docker 的一个 bug请使用 Docker 的代码仓库来提交你的问题。
@ -87,7 +116,8 @@ Docker 的官方和 CWIKIUS 都非常欢迎您对我们的内容进行反馈,
否则的话,你将会看到一个错误信息,单击 **Details** 来查看暂存的站点或者阻止站点重构的错误。重新查看暂存的站点来确定是不是你提交的内容导致的错误。
在 PR 合并到 master 分支之前,其他的项目相关人员同时也会查看暂存的站点。通过这个选项,我们来保护 https://docs.docker.com 站点不会有错误。
在 PR 合并到 master 分支之前,其他的项目相关人员同时也会查看暂存的站点。通过这个选项,我们来保护 https://docs.docker.com
站点不会有错误。
## 在本地构建和查看文档
@ -117,7 +147,6 @@ docker-compose up -d --build
一旦容器被构建和运行了,请通过浏览器来访问 [http://localhost:4000](http://localhost:4000]地址来查看构建成功的文档页面。
如果你想停止预存staging的容器请使用 *docker-compose down* 命令
```bash
@ -126,7 +155,8 @@ docker-compose down
### 启用文档的部署特性
在默认的本地构建文档中,我们禁用了一些特性来缩短文档的构建时间。在针对 [docs.docker.com](https://docs.docker.com) 网站中部署的文档和本地构建的文档有下面的一些配置不同:
在默认的本地构建文档中,我们禁用了一些特性来缩短文档的构建时间。在针对 [docs.docker.com](https://docs.docker.com)
网站中部署的文档和本地构建的文档有下面的一些配置不同:
- 使用 `js/metadata.json` 的自动搜索完成
- google analytics 配置
@ -182,24 +212,29 @@ Either way, you can now access the docs at port 4000 on your Docker host.
## GitHub 查看的相关链接
你可以自由的链接到 `../foo.md` 文件,这样的话这个文本就可以在 GitHub 上进行阅读了,但是需要注意的是 Jekyll 模板将会通知templating notation
`{% such as this %}` 将会被读成原始文档,而不会被处理。因此最好的办法就是访问官方 [https://docs.docker.com/](https://docs.docker.com/) 文档链接来进行阅读文档。
你可以自由的链接到 `../foo.md` 文件,这样的话这个文本就可以在 GitHub 上进行阅读了,但是需要注意的是 Jekyll
模板将会通知templating notation
`{% such as this %}`
将会被读成原始文档,而不会被处理。因此最好的办法就是访问官方 [https://docs.docker.com/](https://docs.docker.com/)
文档链接来进行阅读文档。
### 测试修改和实践指南
如果你希望对修改的样式表进行测试,或者你希望对 Markdown Bootstrap JQuery 或者其他的一些内容进行测试的话,请参考 `test.md` 中的内容(访问路径为 `/test/`)。
如果你希望对修改的样式表进行测试,或者你希望对 Markdown Bootstrap JQuery
或者其他的一些内容进行测试的话,请参考 `test.md` 中的内容(访问路径为 `/test/`)。
### 预页面字体格式
字体格式将会告诉页面在 Markdown 文件的最上端,使用 3 个横线作为开始和结束。其中包括有 YAML 内容,下面为可以支持的关键字,包括有表头,描述和关键字是否是必须的。
字体格式将会告诉页面在 Markdown 文件的最上端,使用 3 个横线作为开始和结束。其中包括有 YAML
内容,下面为可以支持的关键字,包括有表头,描述和关键字是否是必须的。
| 关键字 | 是否必须 | 描述 |
|------------------------|-----------|-----------------------------------------|
|----------------|------|----------------------------------------------------------------------------------------------------------------------------------------------|
| title | 是 | 这个字段定义的是页面的标题,将会添加到 HTML 输出中的 `<h1>` 级别的头部。 |
| description | 是 | 一个描述页面内容的例子,将会添加到 HTML 的 metadata 上面。 |
| keywords | 是 | 一个使用逗号分隔符的关键字列表,将会添加到 HTML 的 metadata 上面。 |
| redirect_from | 否 | 一个 YAML 的列表,这个将会显示链接到当前页面的的所有页面列表。在页面处理的过程中,这个地方配置的页面内容,将会为那些页面创建一个 302 重定向链接到这个页面上。 |
| notoc | 否 | 可以使用 `true` 或者 `false`。如果选择 `true` 的话, TOC 将不会在 HTML 输出的时候创建。默认的配置选项是 `false`。针对没有页面头部内容,将会创建相同的显示页面。|
| notoc | 否 | 可以使用 `true` 或者 `false`。如果选择 `true` 的话, TOC 将不会在 HTML 输出的时候创建。默认的配置选项是 `false`。针对没有页面头部内容,将会创建相同的显示页面。 |
| toc_min | 否 | 如果 `notoc` 设置为 `true` 的话,这个选项将会被忽略。包括在页面 TOC 中头部,最小的页面级别为。默认配置为 `2` 意思是显示页面头部最小的开始为 `<h2>`。 |
| toc_max | 否 | 如果 `notoc` 设置为 `false` 的话,这个选项将会被忽略。包括在页面 TOC 中头部,最大的页面级别为。默认配置为 `3` 意思是显示页面头部最小的开始为 `<h3>`。如果这个设置和 `toc_min` 相同的话,那么只有 `toc_min` 的级别标题被显示。 |
| no_ratings | 否 | 可以使用 `true` 或者 `false`。设置是否为页面设置投票,如果设置为 `true` 的话,页面将不会显示投票。默认为 `false`。 |
@ -226,13 +261,17 @@ no_ratings: true
### 创建标签Tab
为了在页面中使用标签页例如测试页面中的标签页https://docker.ossez.com/test/,这个需要使用 HTML 文件。The use of tabs, as on pages like [https://docs.docker.com/engine/api/](/engine/api/), requires
为了在页面中使用标签页例如测试页面中的标签页https://docker.ossez.com/test/,这个需要使用 HTML 文件。The use of tabs, as
on pages like [https://docs.docker.com/engine/api/](/engine/api/), requires
标签页使用的是 Bootstrap CSS/JS因此请参考相关的文档来获得有关标签页使用的更多有关内容和信息。针对标准的水平标签页你可以拷贝和粘贴下面的表单内容在上面的表单内容中关键的地方在 `href="#id"``id="id"`
标签页使用的是 Bootstrap
CSS/JS因此请参考相关的文档来获得有关标签页使用的更多有关内容和信息。针对标准的水平标签页你可以拷贝和粘贴下面的表单内容在上面的表单内容中关键的地方在 `href="#id"`
`id="id"`
这个需要和你的标签页配置进行对应。以便于添加和删除标签页。
```html
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" data-target="#tab1">TAB 1 HEADER</a></li>
<li><a data-toggle="tab" data-target="#tab2">TAB 2 HEADER</a></li>
@ -249,7 +288,8 @@ no_ratings: true
如果你需要在页面中运行自定义的 Javascript 脚本,这个是需要基于 JQuery 和 Bootstrap 来进行运行的。
请确定 `<script>` 标记存储在页面的最后在所有页面都被载入完成以后。这是因为如果你的脚本在页面之前的话很有肯能导致你的页面在 JQuery 和 Bootstrap JS 载入完成之前运行,这会导致脚本错误。
请确定 `<script>` 标记存储在页面的最后(在所有页面都被载入完成以后)。这是因为,如果你的脚本在页面之前的话,很有肯能导致你的页面在
JQuery 和 Bootstrap JS 载入完成之前运行,这会导致脚本错误。
> **Note**: 通常来说这个是一个糟糕的决定。
@ -257,13 +297,16 @@ no_ratings: true
不要忘记删除所有不需要的图片,将图片保存在 images/ 目录中,这个目录为通常我们保存图片的路径。
通常的,这个文件夹中的图片文件是按照图片文件名的字母进行排和分组的。例如,相对命名方式来说 `settings-file-share.png``settings-proxies.png` 针对  `file-share-settings.png``proxies-settings.png` 来说就更好了。
通常的,这个文件夹中的图片文件是按照图片文件名的字母进行排和分组的。例如,相对命名方式来说 `settings-file-share.png`
`settings-proxies.png` 针对`file-share-settings.png` 和 `proxies-settings.png` 来说就更好了。
你还可以添加数字,尤其你是针对图片有使用和显示顺序的情况下。例如,`run-only-the-images-you-trust-1.svg``run-only-the-images-you-trust-2.png` `run-only-the-images-you-trust-3.png` 等。
你还可以添加数字,尤其你是针对图片有使用和显示顺序的情况下。例如,`run-only-the-images-you-trust-1.svg``run-only-the-images-you-trust-2.png` `run-only-the-images-you-trust-3.png`
等。
在可能的情况下,对需要的内容进行截图,并且避免对整个桌面进行截图,这样避免一些重要的配置信息被泄漏也能够为编辑节约不少的编辑时间。
在 Mac 的计算机中,请对创建进行截图而且不要保存为阴影。你可以使用下面的方法进行操作:当你按下 `Command-Shift-4` 后,单击选项,来进行禁用 。
在 Mac 的计算机中,请对创建进行截图而且不要保存为阴影。你可以使用下面的方法进行操作:当你按下 `Command-Shift-4`
后,单击选项,来进行禁用 。
如果你想全局进行禁用,请运行下面的脚本:
@ -280,8 +323,8 @@ $ killall SystemUIServer # restart it.
## 版权和许可证
Copyright 2013-2020 Docker, inc, 文件的发布是基于 Apache 2.0 license 下进行发布。
Copyright 2013-2024 Docker, inc, 文件的发布是基于 Apache 2.0 license 下进行发布。
中文版本的翻译和维护由 CWIKIUS 进行。我们允许在非商业的情况下自由扩散分发,并保留适当的权利。您可以对我们的作品进行演绎,但需要保留版权信息和来源。
本中文版本请参考https://docker.ossez.com/ 页面中的编译部署内容和 https://docker-docs.ossez.com/ 基于 MD 的编译版本。
本中文版本请参考https://docker.isharkfly.com/ 页面中的编译部署内容和 https://docker-docs.ishafkfly.com/ 基于 MD 的编译版本。

6
_navbar.md Normal file
View File

@ -0,0 +1,6 @@
* [iSharkFly](https://www.isharkfly.com/)
* 文档目录
* [Docker](https://docker-docs.isharkfly.com/#/)
* [OpenSearch](https://opensearch.ossez.com/)
* [Druid](https://druid.ossez.com/#/)
* [Pulumi](https://pulumi.isharkfly.com/)

24
_sidebar.md Normal file
View File

@ -0,0 +1,24 @@
- iSharkFly Docker 文档和手册
- [文档介绍和快速链接](README.md)
- [联系方式](CONTACT.md)
- 教程
- Java
- [概述和环境配置](programming-language/java/_README.md)
- [核心编程](programming-language/java/core/_README.md)
- [语言基础](programming-language/java/fundamentals/_README.md)
- Mumps
- [核心编程](programming-language/java/core/_README.md)
- 文档
- [Spring](framework/spring/_README.md)
- 实践
- [操作系统镜像](in-action/os-image/_index.md)
- 快速导航
- [WWW.CWIKI.US](https://www.cwiki.us/)
- [WWW.OSSEZ.COM](https://www.ossez.com/categories)
- [DOCS.OSSEZ.COM](https://docs.ossez.com/#/)

5
in-action/_index.md Normal file
View File

@ -0,0 +1,5 @@
# Docker 实践In Action
理论和文档只是用来给我们参考和学习的,最后的目的我们还是要进行实际操作的。
当你已经对 Docker 的基本概念有所了解的话,就可以直接进入本部分进行实际的配置和使用。

View File

@ -0,0 +1,5 @@
# Docker 操作系统镜像
理论和文档只是用来给我们参考和学习的,最后的目的我们还是要进行实际操作的。
当你已经对 Docker 的基本概念有所了解的话,就可以直接进入本部分进行实际的配置和使用。

View File

@ -0,0 +1,6 @@
- [Alpine](/in-action/os-image/alpine.md)
- [BusyBox](/in-action/os-image/busybox.md)
- [Inheritance](/week-4/inheritance.md)
- [Encapsulation](/week-4/encapsulation.md)
- [Super and Sub Classes](/week-4/keyword_super.md)
- [Armstrong Numbers](/week-4/armstrong_numbers.md)

View File

@ -0,0 +1,103 @@
Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。
在保持瘦身的同时Alpine 还提供了自己的包管理工具 apk可以通过 https://pkgs.alpinelinux.org/packages 网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件。
![](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/a/a417e5b882442735abb1436afed5223f9d02d873.webp)
Alpine 由非商业组织维护的,支持广泛场景的 Linux发行版它特别为资深/重度Linux用户而优化关注安全性能和资源效能。Alpine 镜像可以适用于更多常用场景,并且是一个优秀的可以适用于生产的基础系统/环境。
Alpine Docker 镜像也继承了 Alpine Linux 发行版的这些优势。相比于其他 Docker 镜像,它的容量非常小,仅仅只有 5 MB 左右(对比 Ubuntu 系列镜像接近 200 MB且拥有非常友好的包管理机制。官方镜像来自 docker-alpine 项目。
目前 Docker 官方已开始推荐使用 Alpine 替代之前的 Ubuntu 做为基础镜像环境。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。
下表是官方镜像的大小比较:
```text
REPOSITORY TAG IMAGE ID VIRTUAL SIZE
alpine latest 4e38e38c8ce0 4.799 MB
debian latest 4d6ce913b130 84.98 MB
ubuntu latest b39b81afc8ca 188.3 MB
centos latest 8efe422e6104 210 MB
```
## 特点
###小巧
Alpine Linux是围绕musl libc和busybox构建的。这使得它比传统的GNU / Linux发行版更小资源效率更高。容器不需要超过8 MB最小的磁盘安装需要大约130 MB的存储空间。不仅可以获得完全成熟的Linux环境还可以从存储库中获得大量的软件包。
二进制包被稀释和拆分,可以更好地控制安装的内容,从而使环境尽可能小而有效。
### 简单
Alpine Linux是一个非常简单的发行版它会尽量避免使用。它使用自己的包管理器名为apkOpenRC init系统提供了一个简单清晰的Linux环境。然后您可以添加项目所需的软件包无论是构建iSCSI存储控制器薄薄的邮件服务器容器还是坚如磐石的嵌入式交换机没有别的办法阻碍。
### 安全
Alpine Linux的设计考虑了安全性。内核使用grsecurity / PaX的非官方端口进行修补所有userland二进制文件都编译为具有堆栈粉碎保护的位置独立可执行文件PIE。这些主动安全功能可防止利用整个类的零日漏洞和其他漏洞。
正是基于上面的原因,我们才能看见在很多的 Docker 的镜像中有 alpine 的名称。
这表明这个镜像是基于 alpine 构建的。
## 获取并使用官方镜像
由于镜像很小,下载时间往往很短,读者可以直接使用 `docker run` 指令直接运行一个 `Alpine` 容器,并指定运行的 Linux 指令,例如:
```
PS C:\Users\yhu> docker run alpine echo '123'
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
4abcf2066143: Already exists
Digest: sha256:c5b1261d6d3e43071626931fc004f70149baeba2c8ec672bd4f27761f8e1ad6b
Status: Downloaded newer image for alpine:latest
123
```
![](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/7/726eeabcfbc27195802cf97e8f4c5b847785372f.png)
如果通过容器管理查看容器的大小,也只有 50MB。
如果再加个 JDK 那可比这个大多了,操作系统的大小还不如一个 JDK。
![](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/9/975f374bc9bfc84d701a2dfa4ec5dcff9a170fb0.png)
## 迁移至 Alpine 基础镜像
目前,大部分 Docker 官方镜像都已经支持 `Alpine` 作为基础镜像,可以很容易进行迁移。
例如:
* `ubuntu/debian` -> `alpine`
* `python:3` -> `python:3-alpine`
* `ruby:2.6` -> `ruby:2.6-alpine`
另外,如果使用 `Alpine` 镜像替换 `Ubuntu` 基础镜像,安装软件包时需要用 `apk` 包管理器替换 `apt` 工具,如
```bash
$ apk add --no-cache <package>
```
`Alpine` 中软件安装包的名字可能会与其他发行版有所不同,可以在 `https://pkgs.alpinelinux.org/packages` 网站搜索并确定安装包名称。
如果需要的安装包不在主索引内,但是在测试或社区索引中。
那么可以按照以下方法使用这些安装包。
```bash
$ echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
$ apk --update add --no-cache <package>
```
由于在国内访问 `apk` 仓库较缓慢,建议在使用 `apk` 之前先替换仓库地址为国内镜像。
下面的命令使用的是阿里云的仓库地址来进行替代。
```docker
RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories \
&& apk add --no-cache <package>
```
## 相关资源
* `Alpine` 官网https://www.alpinelinux.org/
* `Alpine` 官方仓库https://github.com/alpinelinux
* `Alpine` 官方镜像https://hub.docker.com/_/alpine/
* `Alpine` 官方镜像仓库https://github.com/gliderlabs/docker-alpine

View File

@ -0,0 +1,165 @@
BusyBox是一个遵循GPL协议、以自由软件形式发行的应用程序。
Busybox在单一的可执行文件中提供了精简的Unix工具集可运行于多款POSIX环境的操作系统例如Linux包括Android、Hurd、FreeBSD等等。
由于BusyBox可执行文件的文件比较小使得它非常适合使用于嵌入式系统。
作者将BusyBox称为“嵌入式Linux的瑞士军刀”。
![](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/9/9476441a8d5ae2280eb7dfbdc1b26be085b314b2.png)
在以前Docker 官方为了压缩容量,保证容器的启用,其实都在使用 busybox但后期Docker 官方开始使用 Alpine 来替代 busybox。
## 获取官方镜像
可以使用 `docker pull` 指令下载 `busybox:latest` 镜像:
```bash
PS C:\Users\yhu> docker pull busybox:latest
latest: Pulling from library/busybox
ec562eabd705: Pull complete
Digest: sha256:5eef5ed34e1e1ff0a4ae850395cbf665c4de6b4b83a32a0bc7bcb998e24e7bbb
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
What's Next?
View a summary of image vulnerabilities and recommendations → docker scout quickview busybox:latest
PS C:\Users\yhu>
```
下载后,可以看到 `busybox` 镜像只有 *4.26 MB*
```bash
PS C:\Users\yhu> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
repo-docker.isharkfly.com/docker-hub/visatrack latest a329341dbaeb 3 days ago 522MB
repo-docker.isharkfly.com/docker-hub/visatrack <none> f5f9d8b3b410 3 days ago 522MB
alpine/git latest 80ed206c002b 7 days ago 50.4MB
data-mq-service 0.0.1-SNAPSHOT 7eb277a365d6 3 weeks ago 475MB
docsify-docs 0.0.1 32062033284a 6 weeks ago 1.13GB
<none> <none> 0ebfbefe1d52 6 weeks ago 1.13GB
alpine latest 05455a08881e 3 months ago 7.38MB
zchub-crawler latest b20aa408fe8f 7 months ago 1.6GB
mq-service 0.0.1-SNAPSHOT 308dd50eb67a 7 months ago 441MB
reso-web-api-reference-server-odata-manager-app latest 27cdaae03879 8 months ago 441MB
reso-builder latest cabba9a35a22 8 months ago 1.47GB
busybox latest 65ad0d468eb1 11 months ago 4.26MB
tutor-service 0.0.1-SNAPSHOT 20d2f52a1fc4 13 months ago 521MB
sharkfly-wechat-service 0.0.1-SNAPSHOT 0d3e7843994e 13 months ago 465MB
eclipse-temurin 17-jdk-alpine 9a0a4e74d117 13 months ago 358MB
rabbitmq 3.11-management 04a3a28a368b 13 months ago 255MB
framework-spring-docker 0.0.1-SNAPSHOT 42e51829e8c7 15 months ago 379MB
adoptopenjdk/openjdk11-openj9 alpine b533cd6150ba 15 months ago 379MB
mysql/mysql-server latest 1d9c2219ff69 16 months ago 496MB
docker101tutorial latest e60bd4e10534 17 months ago 47MB
alpine/git <none> 22d84a66cda4 17 months ago 43.6MB
PS C:\Users\yhu>
```
如果只说是大小来说Alpine 也大不了多少,但 Alpine 提供了更多的功能。
![](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/optimized/2X/9/91d312f7dcb94ff748f848881baac4cbd4ea8f2c_2_690x390.png)
这也就是为什么 Docker 官方切换到 Alpine 的原因。
## 运行 busybox
启动一个 `busybox` 容器,并在容器中执行 `grep` 命令。
从启动的速度来看,那就是几乎是光速了。
```bash
PS C:\Users\yhu> docker run -it busybox
/ # grep
BusyBox v1.36.1 (2023-05-18 22:34:17 UTC) multi-call binary.
Usage: grep [-HhnlLoqvsrRiwFE] [-m N] [-A|B|C N] { PATTERN | -e PATTERN... | -f FILE... } [FILE]...
Search for PATTERN in FILEs (or stdin)
-H Add 'filename:' prefix
-h Do not add 'filename:' prefix
-n Add 'line_no:' prefix
-l Show only names of files that match
-L Show only names of files that don't match
-c Show only count of matching lines
-o Show only the matching part of line
-q Quiet. Return 0 if PATTERN is found, 1 otherwise
-v Select non-matching lines
-s Suppress open and read errors
-r Recurse
-R Recurse and dereference symlinks
-i Ignore case
-w Match whole words only
-x Match whole lines only
-F PATTERN is a literal (not regexp)
-E PATTERN is an extended regexp
-m N Match up to N times per file
-A N Print N lines of trailing context
-B N Print N lines of leading context
-C N Same as '-A N -B N'
-e PTRN Pattern to match
-f FILE Read pattern from file
/ #
```
查看容器内的挂载信息。
```bash
/ # mount
overlay on / type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/K7LGRMOMB4YBJOAIY37TDH27OH:/var/lib/docker/overlay2/l/WV2IR37DT2RO7IBXLLNKC5WMBI,upperdir=/var/lib/docker/overlay2/deeb782171b9c2a33054df6b46a3125dc7d283d3af2136a4cc2aa84ec9c9a388/diff,workdir=/var/lib/docker/overlay2/deeb782171b9c2a33054df6b46a3125dc7d283d3af2136a4cc2aa84ec9c9a388/work)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,size=65536k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
sysfs on /sys type sysfs (ro,nosuid,nodev,noexec,relatime)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,mode=755)
cpuset on /sys/fs/cgroup/cpuset type cgroup (ro,nosuid,nodev,noexec,relatime,cpuset)
cpu on /sys/fs/cgroup/cpu type cgroup (ro,nosuid,nodev,noexec,relatime,cpu)
cpuacct on /sys/fs/cgroup/cpuacct type cgroup (ro,nosuid,nodev,noexec,relatime,cpuacct)
blkio on /sys/fs/cgroup/blkio type cgroup (ro,nosuid,nodev,noexec,relatime,blkio)
memory on /sys/fs/cgroup/memory type cgroup (ro,nosuid,nodev,noexec,relatime,memory)
devices on /sys/fs/cgroup/devices type cgroup (ro,nosuid,nodev,noexec,relatime,devices)
freezer on /sys/fs/cgroup/freezer type cgroup (ro,nosuid,nodev,noexec,relatime,freezer)
net_cls on /sys/fs/cgroup/net_cls type cgroup (ro,nosuid,nodev,noexec,relatime,net_cls)
perf_event on /sys/fs/cgroup/perf_event type cgroup (ro,nosuid,nodev,noexec,relatime,perf_event)
net_prio on /sys/fs/cgroup/net_prio type cgroup (ro,nosuid,nodev,noexec,relatime,net_prio)
hugetlb on /sys/fs/cgroup/hugetlb type cgroup (ro,nosuid,nodev,noexec,relatime,hugetlb)
pids on /sys/fs/cgroup/pids type cgroup (ro,nosuid,nodev,noexec,relatime,pids)
rdma on /sys/fs/cgroup/rdma type cgroup (ro,nosuid,nodev,noexec,relatime,rdma)
misc on /sys/fs/cgroup/misc type cgroup (ro,nosuid,nodev,noexec,relatime,misc)
cgroup on /sys/fs/cgroup/systemd type cgroup (ro,nosuid,nodev,noexec,relatime,name=systemd)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
/dev/sdd on /etc/resolv.conf type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
/dev/sdd on /etc/hostname type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
/dev/sdd on /etc/hosts type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
devpts on /dev/console type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
proc on /proc/bus type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/fs type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/irq type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/sys type proc (ro,nosuid,nodev,noexec,relatime)
tmpfs on /proc/acpi type tmpfs (ro,relatime)
tmpfs on /proc/kcore type tmpfs (rw,nosuid,size=65536k,mode=755)
tmpfs on /proc/keys type tmpfs (rw,nosuid,size=65536k,mode=755)
tmpfs on /proc/timer_list type tmpfs (rw,nosuid,size=65536k,mode=755)
tmpfs on /sys/firmware type tmpfs (ro,relatime)
/ #
```
`busybox` 镜像虽然小巧,但包括了大量常见的 `Linux` 命令,读者可以用它快速熟悉 `Linux` 命令。
![](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/8/860aea77b579cc4581ba7cbfea17889048954556.png)
随着官方对 Docker 容器切换的情况来看Busybox 对大部分使用 Docker 的人来说可能用不上。
基本上了解下即可。
## 相关资源
* `Busybox` 官网https://busybox.net/
* `Busybox` 官方仓库https://git.busybox.net/busybox/
* `Busybox` 官方镜像https://hub.docker.com/_/busybox/
* `Busybox` 官方仓库https://github.com/docker-library/busybox
---
https://www.isharkfly.com/t/docker-busybox/15734

View File

@ -4,25 +4,58 @@
<meta charset="UTF-8">
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-W3NL9V');</script>
<script>(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-W3NL9V');</script>
<!-- End Google Tag Manager -->
<title>CWIKIUS Docker 文档和手册</title>
<title>iSharkFly Docker 文档和手册</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="Description">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify/lib/themes/vue.css">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple.css">
<style>
:root {
/* Reduce the font size */
--base-font-size: 14px;
/* Change the theme color hue (0-360) */
/* --theme-hue: 325; */
/* Add sidebar navigation bullets */
/* --sidebar-nav-link-before-content-l1: "😀"; */
/* --sidebar-nav-link-before-content-l2: "💩"; */
--content-max-width: 120rem;
--sidebar-width: 22rem;
--link-color: var(--theme-color);
}
</style>
</head>
<body>
<div id="app"></div>
<script>
window.$docsify = {
name: 'CWIKIUS Docker 文档和手册',
repo: 'https://github.com/cwiki-us-docs/docker-docs',
name: 'iSharkFly Docker 文档和手册',
repo: 'https://github.com/iSharkFly-Docs/Docker-Docs',
executeScript: true,
loadNavbar: true,
mergeNavbar: true,
maxLevel: 4,
subMaxLevel: 2,
loadSidebar: true,
}
</script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>