linwebs

林林.台灣 | Linwebs - 隨手記

docker 使用 systemctl

因 docker 是一個執行容器的程式,設計理念並不允許在容器中執行背景服務照產生 Failed to get D-Bus connection: Operation not permitted 錯誤,但可透過以下方法來提升執行docker的權限,進而執行systemctl等服務

1. 先使用 --privileged=true 來提升容器的執行權限,並使用 -d 讓容器啟動後執行於背景

以下的示範為

- 使用來源(REPOSITORY) 為 linwebs/httpd 且標籤(TAG) 為 latest 的 映像(image)

- 執行 /usr/sbin/init (也就是systemctl enable)

- 對應容器網路 tcp/ip 的80埠對應到主機的80

- 為這個容器命名為 httpd

- 使用 -v 將主機的 /var/www/ 目錄掛載到容器中的 /var/www/

docker run -d -p 80:80 -v /var/www/:/var/www/ --name httpd --privileged=true linwebs/httpd:latest /usr/sbin/init

2. 再使用 exec 指令來進入容器執行 bash (使用 -t 開啟終端,使用 -i 開啟標準輸入模式,將指令輸入到終端)

docker exec -it httpd /bin/bash
建立時間:2018/2/15 AM 2:13
作者: Linwebs

bookmark熱門隨手記標籤