centos 需要哪些常用端口_Docker 最常用的镜像命令和容器命令
本文列出了 Docker 使用過程中最常用的鏡像命令和容器命令,以及教大家如何操作容器數據卷,實現容器數據的備份。熟練練習這些命令以后,再來一些簡單的應用部署練習,大家就可以學習 Docker 的鏡像構建、備份恢復遷移、鏡像倉庫、網絡、集群等等更多的內容。
鏡像相關命令
官方文檔:https://docs.docker.com/reference/
查看鏡像
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 7 months ago 13.3kB- REPOSITORY:鏡像在倉庫中的名稱,本文中以后都簡稱鏡像名稱
- TAG:鏡像標簽
- IMAGE ID:鏡像 ID
- CREATED:鏡像的創建日期(不是獲取該鏡像的日期)
- SIZE:鏡像大小
這些鏡像都是存儲在 Docker 宿主機的 /var/lib/docker 目錄下。
搜索鏡像
如果你需要從網絡中查找需要的鏡像,可以通過以下命令搜索。
docker search 鏡像名稱- NAME:鏡像名稱
- DESCRIPTION:鏡像描述
- STARS:用戶評價,反映一個鏡像的受歡迎程度
- OFFICIAL:是否為官方構建
- AUTOMATED:自動構建,表示該鏡像由 Docker Hub 自動構建流程創建的。
拉取鏡像
拉取鏡像就是從中央倉庫下載鏡像到本地。
docker pull 鏡像名稱假如我要拉取 centos 鏡像到本地,如果不聲明 tag 鏡像標簽信息則默認拉取 latest 版本,也可以通過:https://hub.docker.com/ 搜索該鏡像,查看支持的 tag 信息。
通過查看 tag 信息,如果我們要下載 centos7 的鏡像。
docker pull centos:7刪除鏡像
按鏡像 ID 刪除鏡像。
# 刪除單個鏡像 docker rmi 鏡像ID # 刪除多個鏡像 docker rmi 鏡像ID 鏡像ID 鏡像IDdocker images -q 可以查詢到所有鏡像的 ID,通過組合命令可以實現刪除所有鏡像的操作。
docker rmi `docker images -q`注意:如果通過某個鏡像創建了容器,則該鏡像無法刪除。解決辦法:先刪除鏡像中的容器,再刪除該鏡像。
容器相關命令
查看容器
查看正在運行的容器。
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES- CONTAINER ID:容器 ID
- IMAGE:所屬鏡像
- COMMAND:
- CREATED:創建時間
- STATUS:容器狀態
- PORTS:端口
- NAMES:容器名稱
查看停止的容器。
docker ps -f status=exited查看所有容器(包括運行和停止)。
docker ps -a查看最后一次運行的容器。
docker ps -l創建與啟動容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]- -i:表示運行容器;
- -t:表示容器啟動后會進入其命令行。加入這兩個參數后,容器創建就能登錄進去。即分配一個偽終端;
- --name:為創建的容器命名;
- -v:表示目錄映射關系(前者是宿主機目錄,后者是映射到宿主機上的目錄),可以使用多個 -v 做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上;
- -d:在 run 后面加上 -d 參數,則會創建一個守護式容器在后臺運行(這樣創建容器后不會自動登錄容器,如果只加 -i -t 兩個參數,創建容器后就會自動進容器里);
- -p:表示端口映射,前者是宿主機端口,后者是容器內的映射端口。可以使用多個 -p 做多個端口映射。
- -P:隨機使用宿主機的可用端口與容器內暴露的端口映射。
創建并進入容器
下面這行命令的意思就是通過鏡像 AA 創建一個容器 BB,運行容器并進入容器的 /bin/bash。
docker run -it --name 容器名稱 鏡像名稱:標簽 /bin/bash注意:Docker 容器運行必須有一個前臺進程, 如果沒有前臺進程執行,容器認為是空閑狀態,就會自動退出。退出當前容器
exit守護式方式創建容器
docker run -di --name 容器名稱 鏡像名稱:標簽登錄守護式容器方式
docker exec -it 容器名稱|容器ID /bin/bash停止與啟動容器
# 停止容器 docker stop 容器名稱|容器ID # 啟動容器 docker start 容器名稱|容器ID文件拷貝
如果我們需要將文件拷貝到容器內可以使用 cp 命令。
docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄也可以將文件從容器內拷貝出來。
docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄目錄掛載(容器數據卷操作)
我們可以在創建容器的時候,將宿主機的目錄與容器內的目錄進行映射,這樣我們就可以通過修改宿主機某個目錄的文件從而去影響容器,而且這個操作是雙向綁定的,也就是說容器內的操作也會影響到宿主機,實現備份功能。
但是容器被刪除的時候,宿主機的內容并不會被刪除,因為底層是通過拷貝實現的。如果多個容器掛載同一個目錄,其中一個容器被刪除,其他容器的內容也不會受到影響,同理,底層是拷貝實現的。
但是容器被刪除的時候,宿主機的內容并不會被刪除。如果多個容器掛載同一個目錄,其中一個容器被刪除,其他容器的內容也不會受到影響。
容器與宿主機之間的數據卷屬于引用的關系,數據卷是從外界掛載到容器內部中的,所以可以脫離容器的生命周期而獨立存在,正是由于數據卷的生命周期并不等同于容器的生命周期,在容器退出或者刪除以后,數據卷仍然不會受到影響,數據卷的生命周期會一直持續到沒有容器使用它為止。創建容器添加 -v 參數,格式為宿主機目錄:容器目錄,例如:
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7 # 多目錄掛載 docker run -di -v /宿主機目錄:/容器目錄 -v /宿主機目錄2:/容器目錄2 鏡像名目錄掛載操作可能會出現權限不足的提示。這是因為 CentOS7 中的安全模塊 SELinux 把權限禁掉了,在 docker run 時通過 --privileged=true 給該容器加權限來解決掛載的目錄沒有權限的問題。匿名掛載
匿名掛載只需要寫容器目錄即可,容器外對應的目錄會在 /var/lib/docker/volume 中生成。
# 匿名掛載 docker run -di -v /usr/local/data --name centos7-02 centos:7 # 查看 volume 數據卷信息 docker volume ls具名掛載
具名掛載就是給數據卷起了個名字,容器外對應的目錄會在 /var/lib/docker/volume 中生成。
# 匿名掛載 docker run -di -v docker_centos_data:/usr/local/data --name centos7-03 centos:7 # 查看 volume 數據卷信息 docker volume ls指定目錄掛載
一開始給大家講解的方式就屬于指定目錄掛載,這種方式的掛載不會在 /var/lib/docker/volume 目錄生成內容。
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7 # 多目錄掛載 docker run -di -v /宿主機目錄:/容器目錄 -v /宿主機目錄2:/容器目錄2 鏡像名查看目錄掛載關系
通過 docker volume inspect 數據卷名稱 可以查看該數據卷對應宿主機的目錄地址。
[root@localhost ~]# docker volume inspect docker_centos_data [{"CreatedAt": "2020-08-13T20:19:51+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/docker_centos_data/_data","Name": "docker_centos_data","Options": null,"Scope": "local"} ]通過 docker inspect 容器ID或名稱 ,在返回的 JSON 節點中找到 Mounts,可以查看詳細的數據掛載信息。
只讀/讀寫
# 只讀。只能通過修改宿主機內容實現對容器的數據管理。 docker run -it -v /宿主機目錄:/容器目錄:ro 鏡像名 # 讀寫,默認。宿主機和容器可以雙向操作數據。 docker run -it -v /宿主機目錄:/容器目錄:rw 鏡像名volumes-from(繼承)
# 容器 centos7-01 指定目錄掛載 docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7 # 容器 centos7-04 和 centos7-05 相當于繼承 centos7-01 容器的掛載目錄 docker run -di --volumes-from centos7-01 --name centos7-04 centos:7 docker run -di --volumes-from centos7-01 --name centos7-05 centos:7查看容器 IP 地址
我們可以通過以下命令查看容器的元信息。
docker inspect 容器名稱|容器ID也可以直接執行下面的命令直接輸出 IP 地址。
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱|容器ID刪除容器
# 刪除指定容器 docker rm 容器名稱|容器ID # 刪除多個容器 docker rm 容器名稱|容器ID 容器名稱|容器ID常用命令的練習就到這里,下文我們來一些簡單的應用部署練習,加強 Docker 命令的使用。本文采用 知識共享「署名-非商業性使用-禁止演繹 4.0 國際」許可協議。
大家可以通過 分類 查看更多關于 Docker 的文章。
您的點贊和轉發是對我最大的支持。
掃碼關注 哈嘍沃德先生「文檔 + 視頻」每篇文章都配有專門視頻講解,學習更輕松噢 ~
總結
以上是生活随笔為你收集整理的centos 需要哪些常用端口_Docker 最常用的镜像命令和容器命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《数学与生活》的3本书籍
- 下一篇: 从Scratch到C++ 从Scratc