- Published on
Docker 指令紀錄
- Authors

- Name
- Alvis Lu
本篇不會說明 Docker 是什麼,有什麼特色。只是單純記錄我學習到 Docker 的一些指令。
Host user 加入到 Docker 的群組下
加入 docker 的群組: $ sudo usermod -aG docker <user-name>
$ sudo usermod -aG docker alvis
指令說明
新增映像檔 (pull, images)
docker pull NAME[:TAG]
NAME: 映像檔名稱TAG: 映像檔的標籤,例如 ubuntu 發行版號。
# 下載映像檔以`ubuntu 18.04` 為例
$ docker pull ubuntu:18.04
#查看所有的 `image`
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 ccc6e87d482b 3 weeks ago 64.2MB
新增與登入容器 (run, exec, ps)
run 與 exec 的指令差異是 run 會新增出新的容器,exec 則是登入已執行的容器。
run
創建容器: docker run --name <container-name> -it <image-name> <command>
--name: 分配容器的名稱-t: 分配一個虛擬終端(pseudo-TTY)-i: 保持容器的標準輸入(STDID)為打開狀態
創建名稱為 ubuntu_test 的容器, 並執行 bash
$ docker run --name ubuntu_test -it ubuntu bash
ps
查看所有的 container
$ docker ps -a
ONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e363de4d0449 ubuntu "/bin/bash" 3 hours ago Up 3 hours ubuntu_test
exec
登入容器: docker exec -it <container-name> <command>
$ docker exec -it ubuntu_test bash
指定使用者登入容器: docker exec -itu <user-name> <container-name> <command>
指定 ubuntu 使用者登入 ubuntu 容器
$ docker exec -itu ubuntu ubuntu_test bash
PS: 指定使用者登入容器需先在容器內創建使用者,可參考以下的 如何創建使用者
Volume
volume 指令可以讓 docker 與 HOST 產生共同目錄。
- 創建 volume:
$ docker volume create <volume-name> - 刪除 volume:
$ docker volume rm <volume-name>
與 HOST 共同目錄位置: /var/lib/docker/volumes/<volume-name>
Host Volume
若覺得以上的共同目錄方式很不方便開發,想指定 HOST 與 docker 的共同目錄,可以使用以下指令。
$docker run -it --name <container-name> -v [HOST-DIR:CONTAINER-DIR] <images> <command>
docker run -it --name ubuntu -v ~/workspace:/home/ubuntu/share ubuntu bash
WORKDIR
可以使用
使用 exec 指定登入的工作路徑: $ docker exec -it -w <container-workdir> <container-name> <command>
-w: 指定登入docker內的工作路徑。
$ docker exec -itw /home/ubuntu/share ubuntu bash
輸出與輸入 image (export, import)
export
docker export <container-name> > <name>.tar
輸出 ubuntu 容器為 my_ubuntu.tar
$ docker export ubuntu > my_ubuntu.tar
import
docker import [file|URL] <image-name>
$ docker import my_ubuntu.tar my-ubuntu
其他
如何創建使用者
若要在容器內新增使用者,需先進入容器在執行以下步驟。
新增使用者指令: useradd -m -g <groups> -s <login-shell> <user-name>
-m: 創建使用者的home目錄-g: 使用者起始登入的群組-s: 使用者預設登入用 Shell
新增 ubuntu 使用者
$ useradd -m -g users -s /bin/bash ubuntu
切換使用者 su <user-name>
切換 ubuntu 使用者
$ su ubuntu
如何讓非 root 使用者可以使用 sudo
先確認有安裝完 sudo 後,且已是 root 使用者。
修改 /etc/sudoers,在 # User privilege specification 下加入ubuntu 使用者
# User privilege specification
root ALL=(ALL:ALL) ALL
ubuntu ALL=(ALL:ALL) ALL
修改 /etc/sudoers 可能會有 Permission Denied,要將 /etc/sudoers 的權限修改後在改檔案即可。
修改權限
# 先查看 /etc/sudoers 的檔權限
$ ls -l /etc/sudoers
-r--r----- 1 root root 780 Feb 11 02:49 sudoers
# -r--r----- => 這時只有 root 與 root 的群組可以唯讀
# 修改 /etc/sudoers 檔權成可以讓 `root` 有寫入功能
$ chmod 640 /etc/sudoers
# 查看 /etc/sudoers 的權限
$ ls -l /etc/sudoers
-rw-r----- 1 root root 780 Feb 11 02:49 sudoers
# -rw-r----- => 這時就能修改 /etc/sudoers ,加入使用者
# 記得加入完後也要將檔案的權限改回來
$ chmod 440 /etc/sudoers
$ ls -l /etc/sudoers
-r--r----- 1 root root 780 Feb 11 02:49 sudoers
# 已改回原本的權限!
我的 ubuntu Docker 已環境安裝的套件
iproute2, sudo, vim, ssh
使用者與密碼
user: root password: ubuntu
user: ubuntu password: ubuntu