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?update3. 安裝docker
yum?install?docker4. 啟動docker
systemctl?start?docker5. 將docker服務設為開機啟動
systemtctl?enable?docker5. 停止docker
systemtctl?stop?dockerDocker常用命令及操作
4.1 docker鏡像命令
通常情況下,Docker的鏡像都放在Docker的官網 Docker Hub上,點此前往官網
4.1.1 鏡像檢索
除了可以在Docker Hub上搜索鏡像外,還可以通過命令?docker search xxx?進行搜索,下面以 mysql 為例:
docker?search?mysql結果如下:
?
4.1.2 鏡像下載
下載命名為:docker pull 鏡像名:tag,其中tag多為系統的版本,可選的,默認為least。
docker?pull?mysql4.1.3 鏡像列表
獲取已下載鏡像列表命令:docker images
?
其中,
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?tomcat4.2.2 下載鏡像
docker?pull?tomcat4.2.3 根據鏡像啟動容器
最簡單的運行鏡像為容器的命令如下:
docker?run?--name?container-name?-d?image-name運行一個容器,使用docker run命令即可。
-- name:為容器起一個名稱
-d:detached,執行完這句命令后,控制臺將不會阻塞,可以繼續輸入命令操作
image-name:要運行的鏡像名稱
4.2.4 查看運行中容器
可通過如下命令,查看運行中的容器列表:
docker?ps?
CONTAINER ID:啟動時生成的ID
IMAGE:該容器使用的鏡像
COMMAND:容器啟動時執行的命令
CREATED:容器創建時間
STATUS:當前容器狀態
PORTS:當前容器所使用的默認端口號
NAMES:啟動時給容器設置的名稱
4.2.5 停止運行中容器
通過以下命令來停止運行中的容器:
docker?stop?container-name/container-id4.2.5 查看所有的容器
通過以下命令可查看運行和停止的所有容器:
docker?ps?-a4.2.6 啟動容器
通過以下命令啟動容器:
docker?start?container-name/container-id4.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查看:
?
通過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-name4.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退出命令為:
exit4.2.12 更多操作命令
更多命令可以參考:
https://docs.docker.com/engine/reference/commandline/docker/
總結
以上是生活随笔為你收集整理的Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聊聊 Spring Cloud Conf
- 下一篇: eclipse再次导入已经逻辑删除的工程