# Q&A/Docker+Container :::info :book: [動手學習Docker](https://www.docker.com/101-tutorial) ::: {%hackmd 1lpg7PuqRoaui6XyJcrylw %} ## 更新docker container 1. 列出所有的container,並用`<CONTSINER ID>`刪除container。 ```bash=1 docker ps -a docker rm -f <CONTAINER ID> ``` 2. 列出所有的image,並用`<IMAGE ID>`刪除container。 ```bash=+ #檢查image裡simonwxzhao/auto-test的Image Id docker image ls docker image rm <IMADE ID> ``` 3. 重新pull image(Optional) ```bash=+ docker pull simonwxzhao/auto-test ``` 4. 重新啟動Container ```bash=+ #<username>記得要改 docker run -dit --restart always -v /mnt/c/Users/<username>/my_docker_volume:/usr/src/app simonwxzhao/auto-test ``` ## 什麼是docker image和docker container? - 可以將docker image理解為一個描述了container應該長怎樣的檔案。譬如container該有什麼應用程式、檔案內容和結構等。 - 而container就是根據Docker image的描述,產生的一個實體。 - 如果把Docker image視為一個蛋糕食譜,那麼comtainer就是根據這個食譜做出來的蛋糕實體。 - 而Docker image是由一個名為Dockerfile的文字檔建置出來的,既然Docker image是用來描述container應該長怎樣的,那麼用來建置Docker image的Dockerfile內容當然就也是用文字描述了container的長相。 - Dockerfile, Docker image和 Docker container三者的關係如下圖。  - Docker範例 ```dockerfile= FROM python WORKDIR /usr/src/app RUN pip install \ behave \ robotframework && \ pip cache purge ``` ## 執行`docker run ... <image>`時什麼會有類似下載的pull動作?那`<image>`又從哪裡pull來的?   - 執行docker run的時候,會先檢查local有沒有指定的image? - 如果有就根據image開啟container。 - 如果沒有就會到指定的docker registry中pull指定的docker image到local,再跑起container。而預設狀態下的default registry是Docker Hub,故若沒特別指定docker registry就會從docker Hub中pull。 ## 指令 ### 操作docker image - 列出local有的image ```bash docker image ls ``` - 刪除image ```bash docker image rm -f <image-id> ``` ### 操作docker container - 列出正在運行的contianer ```bash docker ps ``` - 列出所有的contianer ```bash docker ps -a ``` - 刪除container ```bash docker rm -f <container-id> ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up