Ubuntu安装Docker
<h2 id="docker架构">Docker架构</h2><p>docker的架构设计分为三个组件:一个客户端,一个REST API和一个服务器(守护进程):</p>
<ul>
<li>Client :与REST API交互。主要目的是允许用户连接守护进程。</li>
<li>REST API:充当客户端和服务器之间的接口,实现通信。</li>
<li>守护进程:负责实际管理容器 - 启动,停止等。守护进程监听来自docker客户端的API请求。</li>
</ul>
<h2 id="环境">环境</h2>
<p>WSL Ubuntu 20.4<br>
查看系统版本</p>
<pre><code class="language-bash">lsb_release -a
cat /proc/version
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1208477/202112/1208477-20211217151721518-1914382556.png" alt="image" loading="lazy"></p>
<h2 id="官网">官网</h2>
<p>Docker官网<br>
Ubuntu安装Docker文档</p>
<h2 id="使用仓库安装">使用仓库安装</h2>
<p>卸载旧版Docker,docker, docker.io, docker-engine都是旧版Docker名字。</p>
<pre><code class="language-bash">sudo apt-get remove docker docker-engine docker.io containerd runc
</code></pre>
<h3 id="设置仓库">设置仓库</h3>
<p>更新apt-get,安装包使得apt可以使用https。</p>
<pre><code class="language-bash"> sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1208477/202112/1208477-20211217141329468-648908847.png" alt="image" loading="lazy"><br>
添加Docker官方的GPG密钥</p>
<pre><code class="language-bash">curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1208477/202112/1208477-20211217143225567-1840643016.png" alt="image" loading="lazy"><br>
设置stable仓库</p>
<pre><code class="language-bash">echo \
"deb https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
</code></pre>
<h3 id="安装docker引擎">安装Docker引擎</h3>
<p>更新apt包索引,安装最新版本的Docker Engine和containerd</p>
<pre><code class="language-bash">sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1208477/202112/1208477-20211217143906454-1481285730.png" alt="image" loading="lazy"></p>
<p>如果想要安装特定版本Docker Engine,需要在 repo 中列出可用版本,然后选择并再次安装</p>
<pre><code class="language-bash">#列出所有版本
apt-cache madison docker-ce
#安装特定版本,例如: 5:20.10.12~3-0~ubuntu-focal
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1208477/202112/1208477-20211217144118745-430883727.png" alt="image" loading="lazy"></p>
<h3 id="测试docker">测试Docker</h3>
<p>启动Docker服务</p>
<pre><code class="language-bash">#启动Docker服务
sudo service docker start
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1208477/202112/1208477-20211217152113343-10945692.png" alt="image" loading="lazy"></p>
<p>下载测试映像并在容器中运行它。当容器运行时,它会打印一条消息并退出。</p>
<pre><code class="language-bash">sudo docker run hello-world
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1208477/202112/1208477-20211217220811947-1819986027.png" alt="image" loading="lazy"></p>
<h3 id="卸载docker">卸载Docker</h3>
<pre><code class="language-bash">#卸载Docker Engine、CLI和Containerd包
sudo apt-get purge docker-ce docker-ce-cli containerd.io
#主机上的映像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
</code></pre>
<h2 id="从包安装">从包安装</h2>
<p>去https://download.docker.com/linux/ubuntu/dists/ 选择你的Ubuntu版本,然后浏览pool/stable/,选择amd64, armhf,arm64,或s390x,并下载.deb文件要安装引擎版本。<br>
<img src="https://img2020.cnblogs.com/blog/1208477/202112/1208477-20211217152803954-1900939772.png" alt="image" loading="lazy"></p>
<p>安装 Docker Engine</p>
<pre><code>sudo dpkg -i /path/to/package.deb
</code></pre>
<p>Docker 守护进程自动启动。</p>
<h2 id="报错">报错</h2>
<h3 id="docker-error-response-from-daemon-oci-runtime-create-failed-container_linuxgo380">docker: Error response from daemon: OCI runtime create failed: container_linux.go:380</h3>
<p>docker run hello-world时报错。<br>
<img src="https://img2020.cnblogs.com/blog/1208477/202112/1208477-20211217153358891-1272378546.png" alt="image" loading="lazy"><br>
原因是docker的版本和linux的内核版本不兼容,查了下是WSL 1是不支持Docker的守护进程的。可以使用Docker CLI连接到通过Docker for Windows或任何其他VM 运行的远程Docker守护进程。WSL 2可以完美支持Docker守护进程。</p>
</div>
<div id="MySignature" role="contentinfo">
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ~<br>
<img id="ViewPicture1_GalleryImage" alt="微信公众号二维码" src="https://images.cnblogs.com/cnblogs_com/aeolian/1679458/o_wechat_gzh_qrcode.jpg" style="height: 258 px; width: 258 px; border-width: 0px">
<br><br><br>
来源:https://www.cnblogs.com/aeolian/p/15702497.html
頁:
[1]