今天要來介紹 Image & Container 更多基本的使用方式。
根據昨天的文章,應該各位都可以抓到一個基本的 Image 及生出一個 Container 了吧。
那麼假設今天有許多 Image 及 Container ,我們需要對其中一些進行管理及操作,又該如何使用呢?
首先先來說說 Image 的管理吧。假設今天只有文字介面,那要如何搜尋並下載 Image 呢?
# ===== Image =====
# 搜索 Dockerhub image (或找另一台電腦上 dockerhub 找)
$ docker search <image_name>
# 例如
$ docker search python
# 從 Dockerhub 拉回 image
$ docker pull [repository/]<image_name>[:<tag>]
# 例如
$ docker pull python:3.9.7
使用以上兩個指令就可以搜尋並下載 Image 了。
有了 Image 之後,那要如何列出所有已下載的 Image 呢?
# 列出本地 image
$ docker images
$ docker image ls
以上兩種指令皆可以列出所有已下載的 Image 。
列出來了所有 Image 之後,如果需要刪除不用的 Image 又該如何刪除呢?
# 移除 image
$ docker rmi <image_name>[:<tag>] or <image_id>
# 例如
$ docker rmi python:3.9.7
$ docker rmi 208aa7e03e89
只要透過 rmi
就可以刪除已下載的 Image 了,這邊切記是 rmi
(Remove Image) 才是刪除 Image ,不要下錯指令了。
接著說說 Container 的管理吧,如何建立就不用說了,前一篇已經有介紹過了,那要如何列出所有的 Container 呢?
# 列出本地 Container
# -a:顯示所有 Container。預設顯示執行中的 Container。
$ docker ps [-a]
$ docker container ls [-a]
這兩種指令都可以列出所有的 Container 。
顯示所有的 Container 之後,如果需要進到 Container 內執行某些指令的話呢?
# 接入 container 的 stdin, stdout 及 stderr
$ docker attach <container_id> or <container_name>
# 例如
$ docker attach 3a2985bcc416
用 attach
就可以接到當初建立 Container 的 stdin, stdout 及 stderr,需要注意的是如果當初建立 Container 時沒有使用 -i
及 -t
是無法接到的喔。
那如果當初沒有使用 -i
及 -t
又該如何接到 stdin, stdout 及 stderr 呢?
簡單啊,建立一個 bash
接出他的 stdin, stdout 及 stderr 不就行了。
# 在 container 內執行指令
$ docke exec [-it] <container_id> or <container_name> <command>
# 例如
$ docker exec -it 3a2985bcc416 bash
接著就只剩下刪除 Container 了,那要如何刪除呢?
# 移除 container
$ docker rm <container_id> or <container_name>
# 例如
$ docker rm 3a2985bcc416
這樣就可以將不在需要的 Container 刪除掉了。
那麼就先到這邊, Image 及 Container 大概就介紹完了。
大家掰~掰~