<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Docker on DowBlog</title>
        <link>https://dow1226.github.io/tags/docker/</link>
        <description>Recent content in Docker on DowBlog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <copyright>Dow</copyright>
        <lastBuildDate>Mon, 09 Dec 2024 14:11:48 +0000</lastBuildDate><atom:link href="https://dow1226.github.io/tags/docker/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>DockerAttach</title>
        <link>https://dow1226.github.io/dockerattach/</link>
        <pubDate>Mon, 09 Dec 2024 14:11:48 +0000</pubDate>
        
        <guid>https://dow1226.github.io/dockerattach/</guid>
        <description>&lt;p&gt;在homelab中常常跟著教學架了一些Docker容器，但又不求甚解。
所以實際應用上常會莫名其妙就吃鱉或踩坑，這次也是常踩到的坑之一，特別記錄一下。&lt;/p&gt;
&lt;h1 id=&#34;進入容器&#34;&gt;進入容器
&lt;/h1&gt;&lt;p&gt;所謂的進入容器，就是指進到 Docker Container 的CLI介面。
我對於 Docker Container的理解還是傾向於它類似於 VM 虛擬機的概念，
進入容器也就類似於開啟虛擬機的管理介面的意思。 (&lt;em&gt;我是這麼想啦 但許多教學都說這兩個觀念完全不同&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;進入Docker容器的常見方法&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker Attach&lt;/li&gt;
&lt;li&gt;SSH&lt;/li&gt;
&lt;li&gt;exec&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;docker-attach&#34;&gt;Docker Attach
&lt;/h2&gt;&lt;p&gt;這是使用 Docker的指令進入容器的CLI介面&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker attach &amp;lt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;容器名稱&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接下來就會進到容器的CLI介面中，
但必須注意的是：==不是每個容器都有bash的shell==
很多教學都是直接用什麼 &lt;code&gt;apt&lt;/code&gt; &lt;code&gt;apt-get&lt;/code&gt; 之類的常用linux管理指令，在某些容器裡是不適用的&lt;/p&gt;
&lt;p&gt;另外要注意的是，使用這個指令進入容器後，管理的session就只有這一個，如果hang住了，是沒辦法像開其他session來救的&lt;/p&gt;
&lt;h2 id=&#34;ssh&#34;&gt;SSH
&lt;/h2&gt;&lt;p&gt;用SSH就跟日常使用連去server管理的方式一樣，但前提是容器必須有裝 SSH Server。
用SSH就沒有前面的 session 問題，但網路上好像不建議docker用ssh，為啥我就沒細看了。&lt;/p&gt;
&lt;h2 id=&#34;exec&#34;&gt;exec
&lt;/h2&gt;&lt;p&gt;這也是個docker指令
簡單說就是在host主機上，指定容器去執行某些指令，例如開啟一個shell&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; -it &amp;lt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;容器名稱&amp;#34;&lt;/span&gt;&amp;gt; /bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以上命令為開啟一個bash shell
但就如前面有提到的，不是每個容器都有bash，我就是踩到了這個坑。&lt;/p&gt;
&lt;h1 id=&#34;心得總結&#34;&gt;心得總結
&lt;/h1&gt;&lt;p&gt;Docker 運作上感覺真的跟VM很像，目前都還只是部屬一些服務自己日常玩而已，不知道實際在企業應用是什麼樣子，也許未來有機會再多熟悉些。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
