Docker核心概念、安裝、埠映射及常用操作命令,詳細到令人髮指

Docker簡介

  • Docker是開源應用容器引擎,輕量級容器技術。
  • 基於Go語言,並遵循Apache2.0協議開源
  • Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的Linux系統上,也可以實現虛擬化
  • 容器完全使用沙箱技術,相互之間不會有任何接口
  • 類似於虛擬機技術(vmware、vitural),但docker直接運行在操作系統(Linux)上,而不是運行在虛擬機中,速度快,性能開銷極低

白話文,簡介就是:

Docker支持將軟件編譯成一個鏡像,然後在鏡像中各種軟件做好配置,將鏡像發佈出去,其他使用者可以直接使用這個鏡像。

運行中的這個鏡像稱為容器,容器啟動是非常快速的。類似windows裡面的ghost操 作系統,安裝好後什麼都有了。

Docker核心概念

  • docker鏡像(Images):Docker鏡像是用於創建Docker容器的模板
  • docker容器(Container):鏡像啟動後的一個實例稱為容器,容器是獨立運行的一個或一組應用,
  • docker客戶端(Client):客戶端通過命令行或其他工具使用Docker API(https://docs.docker.com/reference/api/docker_remote_api)與Docker的守護進程進行通信
  • docker主機(Host):一個物理或虛擬的機器用來執行Docker守護進程和容器
  • docker倉庫(Registry):Docker倉庫用來存儲鏡像,可以理解為代碼控制中的代碼倉庫,Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用

Docker安裝及啟停

1. 查看centos版本

Docker 要求 CentOS 系統的內核版本高於 3.10

通過命令:

uname -r

查看當前centos版本,如版本不符,需升級系統版本

2 升級軟件包及內核(可選)

yum update

3. 安裝docker

yum install docker

4. 啟動docker

systemctl start docker

5. 將docker服務設為開機啟動

systemtctl enable docker

5. 停止docker

systemtctl stop docker

Docker常用命令及操作

4.1 docker鏡像命令

通常情況下,Docker的鏡像都放在Docker的官網 Docker Hub上,點此前往官網

4.1.1 鏡像檢索

除了可以在Docker Hub上搜索鏡像外,還可以通過命令 docker search xxx 進行搜索,下面以 mysql 為例:

docker search mysql

結果如下:

Docker核心概念、安裝、端口映射及常用操作命令,詳細到令人髮指

4.1.2 鏡像下載

下載命名為:docker pull 鏡像名:tag,其中tag多為系統的版本,可選的,默認為least。

docker pull mysql

4.1.3 鏡像列表

獲取已下載鏡像列表命令:docker images

Docker核心概念、安裝、端口映射及常用操作命令,詳細到令人髮指

其中,

RESPOSITORY為鏡像名

TAG為鏡像版本,least代表最新版

IMAGE_ID為該鏡像唯一ID

CREATED為該鏡像創建時間

SIZE為該鏡像大小

4.1.1 鏡像刪除

刪除指定鏡像:

docker rmi image-id

刪除所有鏡像:

docker rmi $(docker images -q)

4.2 容器操作

可以理解為軟件下載(下載QQ)-->安裝(QQ)-->運行(QQ)的過程。

下面以Tomcat為例

4.2.1 搜索鏡像

docker search tomcat

4.2.2 下載鏡像

docker pull tomcat

4.2.3 根據鏡像啟動容器

最簡單的運行鏡像為容器的命令如下:

docker run --name container-name -d image-name

運行一個容器,使用docker run命令即可。

-- name:為容器起一個名稱

-d:detached,執行完這句命令後,控制檯將不會阻塞,可以繼續輸入命令操作

image-name:要運行的鏡像名稱

4.2.4 查看運行中容器

可通過如下命令,查看運行中的容器列表:

docker ps

Docker核心概念、安裝、端口映射及常用操作命令,詳細到令人髮指

CONTAINER ID:啟動時生成的ID

IMAGE:該容器使用的鏡像

COMMAND:容器啟動時執行的命令

CREATED:容器創建時間

STATUS:當前容器狀態

PORTS:當前容器所使用的默認端口號

NAMES:啟動時給容器設置的名稱

4.2.5 停止運行中容器

通過以下命令來停止運行中的容器:

docker stop container-name/container-id

4.2.5 查看所有的容器

通過以下命令可查看運行和停止的所有容器:

docker ps -a

4.2.6 啟動容器

通過以下命令啟動容器:

docker start container-name/container-id

4.2.7 刪除容器

刪除單個容器:

docker rm container-id

刪除所有容器:

docker rm $(docker ps -a -q )

4.2.8 啟動做端口映射的容器

Docker運行容器之後卻發現沒IP,沒端口,也就是說,啟動容器的時候如果不指定對應參數,在容器外部是無法通過網絡來訪問容器內的網絡應用和服務的。 所以需要通過Docker端口映射來實現網絡訪問。

Docker的端口映射通過-p參數實現,命令如下:

docker run --name tomcat1 -d tomcat

docker run --name tomcat2 -d -p 8888:8080 tomcat

如上,就把主機端口8888請求映射到Docker容器內部端口8080了。

執行完這兩條命令後,通過docker ps查看:

Docker核心概念、安裝、端口映射及常用操作命令,詳細到令人髮指

通過PORTS可以看出,tomcat2是做了端口映射的,tomcat1是沒進行映射過的。

分別通過瀏覽器訪問:

http://*.*.*.*:8080/ // tomcat1默認端口

http://*.*.*.*:8888/ // 做過端口映射的Tomcat2,8888會轉發請求到tomcat2的8080

結果如下:

第一個請求是無法請求到的,原因開篇處說過了。

第二個請求是可以正常進行請求的,會由tomcat2容器進行處理

端口映射格式:

ip:hostport:containerport

#指定ip、指定主機port、指定容器port

ip::containerport

#指定ip、未指定主機port、指定容器port

hostport:container

#未指定ip port、指定主機port、指定容器port

4.2.9 查看容器日誌

查看當前容器日誌,可通過如下命令:

docker logs container-id/container-name

4.2.10 查看端口映射

可以通過如下命令查看容器映射了哪些端口及協議:

docker port container-id

示例:

[root@docker ~]#docker port 46114af6b44e

8080/tcp -> 0.0.0.0:8888

[root@docker ~]#docker port cea668ee4db0

如果返回空,則代表沒進行端口映射。

4.2.11 登錄退出容器

運行中的容器其實是一個功能完備的Linux操作系統,所以我們可以像常規系統一樣進行登陸及退出操作。

登錄命令為:

docker exec -it container-id/container-name bash

退出命令為:

exit

4.2.12 更多操作命令

更多命令可以參考:

https://docs.docker.com/engine/reference/commandline/docker/


分享到:


相關文章: