「Docker」:修訂間差異

出自Gea-Suan Lin's Wiki
跳至導覽 跳至搜尋
本頁面具有訪問限制。如果您看見此訊息,這代表您沒有訪問本頁面的權限。
 
(未顯示同一使用者於中間所作的 33 次修訂)
行 1: 行 1:
'''Docker'''是一套提供容器({{lang-en|Container}})的軟體。
'''Docker'''是一套提供容器({{lang-en|Container}})的軟體。
== 安裝 ==
可以用這個一行指令直接安裝:
<syntaxhighlight lang="bash">
sudo mkdir /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg; echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list; sudo apt update; sudo apt install -y docker-ce; sudo apt clean
</syntaxhighlight>
另外arm64的平台可以這樣安裝:
<syntaxhighlight lang="bash">
sudo mkdir /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg; echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list; sudo apt update; sudo apt install -y docker-ce; sudo apt clean
</syntaxhighlight>
如果是Raspberry Pi的話(32-bit OS),可以這樣安裝:
<syntaxhighlight lang="bash">
sudo mkdir /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg; echo "deb [signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/raspbian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list; sudo apt update; sudo apt install -y docker-ce; sudo apt clean
</syntaxhighlight>
=== docker compose(docker-compose) ===
另外可以加裝Docker Compose套件,這個套件有兩個版本,一個是Plugin版本,另外一個是獨立的檔案:
<syntaxhighlight lang="bash">
sudo apt install -y docker-compose docker-compose-plugin; sudo apt clean
</syntaxhighlight>
這兩個用法都可以用,但要注意版本有可能不一樣造成差異:
<syntaxhighlight lang="bash">
docker compose
docker-compose
</syntaxhighlight>
=== docker-machine ===
目前已經deprecated<ref>{{Cite web |url=https://github.com/docker/machine/issues/4537 |title=Docker Machine is now in maintenance mode #4537 |accessdate=2022-07-13 |language=en}}</ref>。沒有套件可以裝,直接安裝binary<ref>{{Cite web |url=https://docs.docker.com/machine/install-machine/ |title=Install Docker Machine {{!}} Docker Documentation |language=en |accessdate=2021-07-21}}</ref>:
<syntaxhighlight lang="bash">
base=https://github.com/docker/machine/releases/download/v0.16.2 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo mv /tmp/docker-machine /usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine
</syntaxhighlight>


== 範例 ==
== 範例 ==
 啟動一個簡單的[[Ubuntu]]環境:
 啟動一個簡單的[[Ubuntu]]環境:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
docker run -i -t --rm ubuntu:latest /bin/bash
docker run -i -t --rm ubuntu:latest /bin/bash
</syntaxhighlight>
或是特定版本:
<syntaxhighlight lang="bash">
docker run -i -t --rm ubuntu:jammy /bin/bash
</syntaxhighlight>
</syntaxhighlight>


 然後把APT的伺服器換掉:
 然後把APT的伺服器換掉:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
perl -pi -e 's/archive.ubuntu.com/tw.archive.ubuntu.com/g' /etc/apt/sources.list
perl -pi -e 's/archive.ubuntu.com/tw.archive.ubuntu.com/g' /etc/apt/sources.list
行 14: 行 66:


 裝些簡單的東西:
 裝些簡單的東西:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt install -y curl vim-nox wget
apt install -y curl vim-nox wget
</syntaxhighlight>
</syntaxhighlight>
如果要讓container內可以存取到host主機的內容,有兩類方法,一種是直接在網路界面層打通<code>--network=host</code>,但這個方法只能在Linux上使用:
<syntaxhighlight lang="bash">
docker run -i -t --rm --network=host ubuntu:latest /bin/bash
</syntaxhighlight>
另外一種是透過hostname的方法打通,內部的機器可以使用<code>host.docker.internal</code>這個名稱存取。但要注意因為跨了界面,不會算在<code>lo</code>流量(<code>lo</code>的流量通常都會pass all),需要在[[iptables]]或是[[UFW]]設定對應的規則:
<syntaxhighlight lang="bash">
docker run -i -t --rm -add-host host.docker.internal:host-gateway ubuntu:latest /bin/bash
</syntaxhighlight>
== 常用指令 ==
<syntaxhighlight lang="bash">
docker system prune
</syntaxhighlight>
== 參考文獻 ==
{{Reflist|2}}
== 相關連結 ==
* [[Podman]]
== 外部連結 ==
* {{Official|https://www.docker.com/}}


[[Category:軟體]]
[[Category:軟體]]

於 2024年2月17日 (六) 17:14 的最新修訂

Docker是一套提供容器(英語:Container)的軟體。

安裝

可以用這個一行指令直接安裝:

sudo mkdir /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg; echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list; sudo apt update; sudo apt install -y docker-ce; sudo apt clean

另外arm64的平台可以這樣安裝:

sudo mkdir /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg; echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list; sudo apt update; sudo apt install -y docker-ce; sudo apt clean

如果是Raspberry Pi的話(32-bit OS),可以這樣安裝:

sudo mkdir /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg; echo "deb [signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/raspbian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list; sudo apt update; sudo apt install -y docker-ce; sudo apt clean

docker compose(docker-compose)

另外可以加裝Docker Compose套件,這個套件有兩個版本,一個是Plugin版本,另外一個是獨立的檔案:

sudo apt install -y docker-compose docker-compose-plugin; sudo apt clean

這兩個用法都可以用,但要注意版本有可能不一樣造成差異:

docker compose
docker-compose

docker-machine

目前已經deprecated[1]。沒有套件可以裝,直接安裝binary[2]

base=https://github.com/docker/machine/releases/download/v0.16.2 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo mv /tmp/docker-machine /usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine

範例

啟動一個簡單的Ubuntu環境:

docker run -i -t --rm ubuntu:latest /bin/bash

或是特定版本:

docker run -i -t --rm ubuntu:jammy /bin/bash

然後把APT的伺服器換掉:

perl -pi -e 's/archive.ubuntu.com/tw.archive.ubuntu.com/g' /etc/apt/sources.list
apt update -y

裝些簡單的東西:

apt install -y curl vim-nox wget

如果要讓container內可以存取到host主機的內容,有兩類方法,一種是直接在網路界面層打通--network=host,但這個方法只能在Linux上使用:

docker run -i -t --rm --network=host ubuntu:latest /bin/bash

另外一種是透過hostname的方法打通,內部的機器可以使用host.docker.internal這個名稱存取。但要注意因為跨了界面,不會算在lo流量(lo的流量通常都會pass all),需要在iptables或是UFW設定對應的規則:

docker run -i -t --rm -add-host host.docker.internal:host-gateway ubuntu:latest /bin/bash

常用指令

docker system prune

參考文獻

  1. Docker Machine is now in maintenance mode #4537. [2022-07-13] (English). 
  2. Install Docker Machine | Docker Documentation. [2021-07-21] (English). 

相關連結

外部連結