iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
DevOps

為你自己架 Server系列 第 5

D5 Docker

  • 分享至 

  • xImage
  •  

Docker 是一個廣泛應用於容器化應用程式的平台,它在當今的軟體開發和部署領域中變得極為流行。Docker 的主要優勢之一是它能夠輕鬆地建立、運行和管理容器,這些容器可以在不同的環境中具有一致性,並且可以隔離應用程式及其依賴項,從而實現更高的可移植性和可重複性。
而很多開源的 self-hosted 專案,都都提供了 Docker 容器的 image 來讓使用者方便架設,例如影音平台 jellyfin、放照片的 piwigo 等等,讓架設者能夠快速啟動這些應用程式,所以我認為這算是一個家用伺服器很常用的工具。

在這篇文章中,我們將簡要介紹 Docker,並提供一些基本的 Docker 指令和 Docker Compose 的示例,以幫助初學者了解 Docker 的基本使用方式,但不會深入。

Docker 使用

Docker 本身的使用和原理相信有更多教學文有詳細的解說,所以這邊不會著墨太多,只會大概列出自己常用的幾個指令。

$ docker run -d [image-name]

這個指令會把指定的 image 變成 container 跑起來,並且跑在背景。

$ docker exec -it [container-name] bash

對指定的 container 執行 bash 指令,白話來說就是進入 container 並開一個 shell 的意思。

$ docker logs [container-name]

看指定 container 的 log,通常我還會加上 -f 參數,讓他可以持續更新。

Docker Compose

比起 Docker 本身,我覺得 docker-compose 在架服務上面更有用。
它通過一個 YAML 文件中的設定來管理多個 container 的啟動、網路設定和儲存設定。對於需要多個 container 一起運作的專案,Docker Compose 可以更輕鬆地管理這些容器。
就算是單一 container,我也建議可以把他寫成檔案,然後用 docker-compose 來跑,這樣才能知道設定檔的樣子,而不是把全部的東西都寫在一行 docker run 指令裡面。
像是以下這個 jellyfin 的 docker-compose.yaml 就是一個很好的例子。

---
version: "2.1"
services:
  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - JELLYFIN_PublishedServerUrl=192.168.0.5 #optional
    volumes:
      - /path/to/library:/config
      - /path/to/tvseries:/data/tvshows
      - /path/to/movies:/data/movies
    ports:
      - 8096:8096
      - 8920:8920 #optional
      - 7359:7359/udp #optional
      - 1900:1900/udp #optional
    restart: unless-stopped

這裡面有滿滿的參數,雖然只有一個 container,但寫成 docker run 指令會非常長,把它寫成 YAML,交給 docker-compose 去解析在管理上會更為輕鬆。

結語

總之,Docker 是一個強大的容器化平台,用於簡化應用程式的部署和管理。Docker Compose 則進一步簡化了多容器應用程式的管理。無論是用於開發、測試還是生產環境,Docker 都是一個值得學習和使用的工具,它可以提高效率,確保應用程式的可移植性和一致性。


上一篇
D4 Firewall - UFW
下一篇
D6 Ansible
系列文
為你自己架 Server8
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言