# Docker 學習筆記 此篇記錄[Docker and Kubernetes - Full Course for Beginners 教學影片](https://www.youtube.com/watch?v=Wf2eSG3owoA&feature=youtu.be&ab_channel=freeCodeCamp.org)中提到的及一些常用指令 停止容器 ``` docker stop [container id/ container name] ``` 用start則可重新啟動容器 ``` docker start [container id/ container name] ``` 若要刪除容器 ``` docker rm [container id/ container name] ``` 若用docker ps -aq可取得所有容器的id only可以用來帶入參數 ``` docker rm $(docker ps -aq) ``` 加入-f則可強制刪除正在執行的容器 ``` docker rm -f $(docker ps -aq) ``` 將映像檔加入不同標籤名 ``` docker tag [image名]:[tag名] [image名]:[tag名2] ``` **Debug**可用docker logs查看log ``` docker logs [container id前三碼] ``` 加上-f則可自動追蹤這個容器的log,若需停止需按CTRL+C ``` docker logs -f [container id 前三碼] ``` 也可用inspect取得更多資訊 ``` docker inspect [container id/ container name] ``` **Docker Volume**可以讓host主機和container之間的檔案互通 例如要將電腦中的html檔案放到運行nginx的容器的資料夾中則先cd到有html檔案的目錄後再下指令 pwd 會帶入 present working directory :ro 為read only ``` docker run --name website -v $(pwd):[容器目標路徑]:ro -d -p 8080:80 nginx ``` 如此一來當我們主機中的html檔案被更新時docker上的該檔案也會同步更新 若需查看container內容可用exec進去container內再下ls看檔案列表 -it interactive mode sh/bash 後面執行shell script或bash指令 ``` docker exec -it [container id 前三碼] sh ``` ``` docker exec -it [container id/ container name] bash ``` 若進去container中的目錄路徑touch某個檔案則我們主機中之前指定連通的資料夾中也會出現該檔案 若今天要在其他container使用相同的資料則可用 --volumes-from ``` docker run --name [新的容器名] --volumes-from [舊的容器名] -d -p 8081:80 nginx ``` **Dockerfile**範例(運用cache提升效能) ``` FROM node:latest WORKDIR /app ADD package*.json /. RUN npm install ADD . . (current directory, working directory) CMD node index.js ``` 若需減少映像檔的體積可下載Alpine Linux的版本 ###### tags: `Docker`