--- tags: 109-1, lecture --- # Docker ## Installation 以下是各種 OS 載 docker 並讓它不用 root 權限就可執行的指令 成功的話跑 docker ps 應該不會 permission denied,跑 docker-compose 應該要有 help message ### Ubuntu/Mint/Kali Linux ```shell $ sudo apt install docker.io docker-compose $ sudo usermod -aG docker $USER $ newgrp - docker ``` ### Arch Linux ```shell $ sudo pacman -S docker docker-compose $ sudo usermod -aG docker $USER $ newgrp docker ``` ### MacOS 官方有桌面版,下載執行就好了 https://docs.docker.com/docker-for-mac/install/ ### Windows 官方也有桌面版的,下載執行就好了 https://docs.docker.com/docker-for-windows/install/ ## Tutorial https://docs.docker.com/get-started/ https://hub.docker.com/r/docker/getting-started https://github.com/docker/getting-started ## Resources - [Documentation](https://docs.docker.com/) - [Docker Hub](https://hub.docker.com/) - [Dockerfile reference](https://docs.docker.com/engine/reference/builder/) - [Compose file reference](https://docs.docker.com/compose/compose-file/) - https://medium.com/unorthodox-paranoid/docker-tutorial-101-c3808b899ac6 ## Note * 輕量虛擬機 * 包好的東西,可以部署給人很快 * scale: 一個 image 開好多個 container,可以隨著規模變大 * 較安全,因為是虛擬機 * image: 類似 vdi 檔,可以複製很多份給別人,就可以一直開虛擬機器 docker 較正常的虛擬機更快更輕量 ![](https://i.imgur.com/bn7NpMC.png) * docker-hub: 類似放 docker image 的雲端,docker 會去 docker-hub 抓同名字的 image 下來,就可以用了 (類似自己去抓 vdi 檔下來,就有了) ```bash= $ docker pull getting-started $ docker run -d -p 80:80 getting-started # 接著瀏覽器開 localhost 就會有了 # 80 這個 port 就是預設,所以打 localhost:80 也是一樣的 $ docker ps # 正在 run 的 $ docker ps --all $ docker stop <id> # 停掉虛擬機 $ docker rm <id> # 刪掉 $ docker rm -f <id> # stop + rm $ docker build -dp <your port>:<inner port> <image name> $ docker exec -it <id> sh # 進到裡面的 shell ```