鎮(zhèn)江網(wǎng)站建設(shè)策劃被公司優(yōu)化掉是什么意思
一、Docker簡(jiǎn)介
- Docker是開(kāi)源應(yīng)用容器引擎,輕量級(jí)容器技術(shù)。
- 基于Go語(yǔ)言,并遵循Apache2.0協(xié)議開(kāi)源
- Docker可以讓開(kāi)發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的Linux系統(tǒng)上,也可以實(shí)現(xiàn)虛擬化
- 容器完全使用沙箱技術(shù),相互之間不會(huì)有任何接口
- 類(lèi)似于虛擬機(jī)技術(shù)(vmware、vitural),但docker直接運(yùn)行在操作系統(tǒng)(Linux)上,而不是運(yùn)行在虛擬機(jī)中,速度快,性能開(kāi)銷(xiāo)極低
白話文,簡(jiǎn)介就是:
Docker支持將軟件編譯成一個(gè)鏡像,然后在鏡像中各種軟件做好配置,將鏡像發(fā)布出去,其他使用者可以直接使用這個(gè)鏡像。
運(yùn)行中的這個(gè)鏡像稱為容器,容器啟動(dòng)是非??焖俚?。類(lèi)似windows里面的ghost操 作系統(tǒng),安裝好后什么都有了。
二、Docker核心概念
- docker鏡像(Images):Docker鏡像是用于創(chuàng)建Docker容器的模板
- docker容器(Container):鏡像啟動(dòng)后的一個(gè)實(shí)例稱為容器,容器是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用,
- docker客戶端(Client):客戶端通過(guò)命令行或其他工具使用Docker API(https://docs.docker.com/reference/api/docker_remote_api)與Docker的守護(hù)進(jìn)程進(jìn)行通信
- docker主機(jī)(Host):一個(gè)物理或虛擬的機(jī)器用來(lái)執(zhí)行Docker守護(hù)進(jìn)程和容器
- docker倉(cāng)庫(kù)(Registry):Docker倉(cāng)庫(kù)用來(lái)存儲(chǔ)鏡像,可以理解為代碼控制中的代碼倉(cāng)庫(kù),Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用
三、Docker安裝及啟停
1. 查看centos版本
Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10
通過(guò)命令:
uname -r
查看當(dāng)前centos版本,如版本不符,需升級(jí)系統(tǒng)版本
2 升級(jí)軟件包及內(nèi)核(可選)
yum update
3. 安裝docker
yum install docker
4. 啟動(dòng)docker
systemctl start docker
5. 將docker服務(wù)設(shè)為開(kāi)機(jī)啟動(dòng)
systemtctl enable docker
5. 停止docker
systemtctl stop docker
四、Docker常用命令及操作
4.1 docker鏡像命令
通常情況下,Docker的鏡像都放在Docker的官網(wǎng) Docker Hub上,點(diǎn)此前往官網(wǎng)
4.1.1 鏡像檢索
除了可以在Docker Hub上搜索鏡像外,還可以通過(guò)命令 docker search xxx
進(jìn)行搜索,下面以 mysql 為例:
docker search mysql
結(jié)果如下:
4.1.2 鏡像下載
下載命名為:docker pull 鏡像名:tag
,其中tag
多為系統(tǒng)的版本,可選的,默認(rèn)為least
。
docker pull mysql
4.1.3 鏡像列表
獲取已下載鏡像列表命令:docker images
其中,
RESPOSITORY
為鏡像名
TAG
為鏡像版本,least
代表最新版
IMAGE_ID
為該鏡像唯一ID
CREATED
為該鏡像創(chuàng)建時(shí)間
SIZE
為該鏡像大小
4.1.1 鏡像刪除
刪除指定鏡像:
docker rmi image-id
刪除所有鏡像:
docker rmi $(docker images -q)
4.2 容器操作
可以理解為軟件下載(下載QQ)–>安裝(QQ)–>運(yùn)行(QQ)的過(guò)程。
下面以Tomcat為例
4.2.1 搜索鏡像
docker search tomcat
4.2.2 下載鏡像
docker pull tomcat
4.2.3 根據(jù)鏡像啟動(dòng)容器
最簡(jiǎn)單的運(yùn)行鏡像為容器的命令如下:
docker run --name container-name -d image-name
運(yùn)行一個(gè)容器,使用docker run
命令即可。
-- name
:為容器起一個(gè)名稱
-d
:detached,執(zhí)行完這句命令后,控制臺(tái)將不會(huì)阻塞,可以繼續(xù)輸入命令操作
image-name
:要運(yùn)行的鏡像名稱
4.2.4 查看運(yùn)行中容器
可通過(guò)如下命令,查看運(yùn)行中的容器列表:
docker ps
CONTAINER ID
:啟動(dòng)時(shí)生成的ID
IMAGE
:該容器使用的鏡像
COMMAND
:容器啟動(dòng)時(shí)執(zhí)行的命令
CREATED
:容器創(chuàng)建時(shí)間
STATUS
:當(dāng)前容器狀態(tài)
PORTS
:當(dāng)前容器所使用的默認(rèn)端口號(hào)
NAMES
:啟動(dòng)時(shí)給容器設(shè)置的名稱
4.2.5 停止運(yùn)行中容器
通過(guò)以下命令來(lái)停止運(yùn)行中的容器:
docker stop container-name/container-id
4.2.5 查看所有的容器
通過(guò)以下命令可查看運(yùn)行和停止的所有容器:
docker ps -a
4.2.6 啟動(dòng)容器
通過(guò)以下命令啟動(dòng)容器:
docker start container-name/container-id
4.2.7 刪除容器
刪除單個(gè)容器:
docker rm container-id
刪除所有容器:
docker rm $(docker ps -a -q )
4.2.8 啟動(dòng)做端口映射的容器
Docker運(yùn)行容器之后卻發(fā)現(xiàn)沒(méi)IP,沒(méi)端口,也就是說(shuō),啟動(dòng)容器的時(shí)候如果不指定對(duì)應(yīng)參數(shù),在容器外部是無(wú)法通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)容器內(nèi)的網(wǎng)絡(luò)應(yīng)用和服務(wù)的。 所以需要通過(guò)Docker端口映射來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)訪問(wèn)。
Docker的端口映射通過(guò)-p
參數(shù)實(shí)現(xiàn),命令如下:
docker run --name tomcat1 -d tomcat
docker run --name tomcat2 -d -p 8888:8080 tomcat
如上,就把主機(jī)端口8888請(qǐng)求映射到Docker容器內(nèi)部端口8080了。
執(zhí)行完這兩條命令后,通過(guò)docker ps
查看:
通過(guò)PORTS
可以看出,tomcat2
是做了端口映射的,tomcat1
是沒(méi)進(jìn)行映射過(guò)的。
分別通過(guò)瀏覽器訪問(wèn):
http://*.*.*.*:8080/
// tomcat1默認(rèn)端口
http://*.*.*.*:8888/
//
做過(guò)端口映射的Tomcat2,8888會(huì)轉(zhuǎn)發(fā)請(qǐng)求到tomcat2的8080
結(jié)果如下:
第一個(gè)請(qǐng)求是無(wú)法請(qǐng)求到的,原因開(kāi)篇處說(shuō)過(guò)了。
第二個(gè)請(qǐng)求是可以正常進(jìn)行請(qǐng)求的,會(huì)由tomcat2容器進(jìn)行處理
端口映射格式:
ip:hostport:containerport #指定ip、指定主機(jī)port、指定容器port
ip::containerport #指定ip、未指定主機(jī)port、指定容器port
hostport:container #未指定ip port、指定主機(jī)port、指定容器port
4.2.9 查看容器日志
查看當(dāng)前容器日志,可通過(guò)如下命令:
docker logs container-id/container-name
4.2.10 查看端口映射
可以通過(guò)如下命令查看容器映射了哪些端口及協(xié)議:
docker port container-id
示例:
[root@docker ~]#docker port 46114af6b44e
8080/tcp -> 0.0.0.0:8888
[root@docker ~]#docker port cea668ee4db0
如果返回空,則代表沒(méi)進(jìn)行端口映射。
4.2.11 登錄退出容器
運(yùn)行中的容器其實(shí)是一個(gè)功能完備的Linux操作系統(tǒng),所以我們可以像常規(guī)系統(tǒng)一樣進(jìn)行登陸及退出操作。
登錄命令為:
docker exec -it container-id/container-name bash
退出命令為:
exit
4.2.12 更多操作命令
更多命令可以參考:
https://docs.docker.com/engine/reference/commandline/docker/