# 在 Ubuntu 19.10 上使用 Docker 的筆記 ###### tags: `Ubuntu` `Docker` ## 安裝 Docker `$ sudo apt install docker.io` ``` $ apt policy docker.io docker.io: 已安裝:19.03.2-0ubuntu1 候選: 19.03.2-0ubuntu1 版本列表: *** 19.03.2-0ubuntu1 500 500 http://tw.archive.ubuntu.com/ubuntu eoan/universe amd64 Packages 100 /var/lib/dpkg/status ``` ### 加入 docker 群組 `$ sudo usermod -G docker -a $USER` ### 暫時先取得 docker 群組 > 或是重新啟動 Ubuntu 19.10 作業系統 (強烈建議) `$ newgrp docker` ## 產生 container > 如果未獲得 docker 群組,就無法直接使用 docker,可能需要使用 sudo 的方式來使用。 `$ docker create -it --cap-add=SYS_ADMIN --cap-add sys_admin --privileged=true -v /home/$USER/tmp:/root ubuntu:18.04 /bin/bash` > -i, --interactive Keep STDIN open even if not attached > -t, --tty Allocate a pseudo-TTY > -v /home/\$USER/tmp:/root > 將事先產生好的 /home/\$USER/tmp 目錄,掛載在 container 當中的 /root 底下。 > --rm Automatically remove the container when it exits > --privileged Give extended privileges to this container > https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities ``` $ docker create -it -v /home/$USER/tmp:/root ubuntu:18.04 /bin/bash 73ea741eb32cb6edfb7928a51ed609745a2a81c96b50d4e56105a7035e89f9d7 $ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 73ea741eb32c ubuntu:18.04 "/bin/bash" About a minute ago Created stoic_tereshkova $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 73ea741eb32c ubuntu:18.04 "/bin/bash" About a minute ago Created stoic_tereshkova ``` > 後面的 stoic_tereshkova 是隨機取的名稱,也可以自己指定名稱,使用前面的 CONTAINER ID 也是可以的,例如: `$ docker create --name stoic_tereshkova -it -v /home/$USER/tmp:/root ubuntu:18.04 /bin/bash` > 也是可以的,不過名稱不可以重複。 `$ docker container rename stoic_tereshkova little_finger` > 也可以事後再改一個自己喜歡的名稱。 ## 啟動 container ``` $ docker start little_finger little_finger $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 73ea741eb32c ubuntu:18.04 "/bin/bash" 4 minutes ago Up 2 seconds little_finger ``` > 看 STATUS 已經啟動了。 ### 登入 container 之中 `$ docker attach little_finger` or `docker container attach little_finger` > 要離開就直接輸入 exit 就可以了 ### 在 Ubuntu 18.04 的 containter 中,安裝一些工具。 > 先將 /etc/apt/sources.list 換成臺灣的 mirror site 會比較快 `# sed -i 's/archive.ubuntu.com/tw.archive.ubuntu.com/g' /etc/apt/sources.list` > 更新一下軟體套件索引,就可以安裝軟體套件了。 `# apt update && apt install bash-completion vim ca-certificates apt-transport-https gpg sudo uuid-runtime cpio` > '#' 表示使用 root 權限,'$' 表示一般使用者權限。 ## 建立新的 image > 只是建立在本機上面而已 `$ docker container commit little_finger sha256:37b80c402d7d4b5452d4695b377cb7421ac4fb8bb5a5a181562f0fcebea3dacf` > 下次就可以用這個新的 image 做為基底開始 ``` $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 37b80c402d7d 9 seconds ago 153MB ubuntu 18.04 775349758637 4 days ago 64.2MB ``` > 給個新名子 `$ docker image tag 37b80c402d7d ubuntu-tw-vim` ``` $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu-tw-vim latest 37b80c402d7d 4 minutes ago 153MB ubuntu 18.04 775349758637 4 days ago 64.2MB ``` ## 刪除 container ``` $ docker rm little_finger little_finger ``` > 新的 image 已經建立起來,所以將不用的 container 刪除掉。 ## 參考資料 * https://philipzheng.gitbooks.io/docker_practice/ * https://docs.docker.com/get-started/ * https://training.play-with-docker.com/ops-stage1/