【Docker】【基礎(chǔ)】基本使用
一、基本命令使用

1. docker run -d -p 80:80? images_name 后臺(tái)獨(dú)立運(yùn)行一個(gè)容器:
參數(shù)說(shuō)明:
-d?????? --在隔離模式下后臺(tái)運(yùn)行一個(gè)docker容器
-p 80:80 --將宿主機(jī)的80端口映射到容器的80端口
images_name --需要運(yùn)行的鏡像
2. Docker exec
二、docker基本使用
制作docker鏡像
鏡像的制作有兩種方法:
第一種,使用dockerfile文件制作鏡像:
制作鏡像之前,需要有一個(gè)應(yīng)用程序作為制作鏡像的內(nèi)容,將應(yīng)用程序包準(zhǔn)備好。
制作鏡像需要一個(gè)dockerfile文件,在準(zhǔn)備好的應(yīng)用程序包根目錄下創(chuàng)建一個(gè)dockerfile文件。
使用docker build -t images_name .? 查找當(dāng)前目錄的dockerfile文件來(lái)將該應(yīng)用程序包編譯成指定名字鏡像。
第二種,先docker run運(yùn)行一下基礎(chǔ)鏡像,在容器中完成應(yīng)用的部署與啟動(dòng),再使用docker commit生成鏡像。使用這種方式生成的鏡像會(huì)在k8s中部署會(huì)出現(xiàn)問(wèn)題,不推薦使用
運(yùn)行應(yīng)用容器
使用基本運(yùn)行命令docker run -d -p? src_port: dst_port? images_name,運(yùn)行上面制作的鏡像在一個(gè)容器中
在瀏覽器訪問(wèn)http://localhost:src_port就會(huì)訪問(wèn)到剛才打包的應(yīng)用App入口了
打開(kāi)docker儀表板或者使用命令docker ps就能看到后臺(tái)正在運(yùn)行的應(yīng)用容器了。
當(dāng)我們想進(jìn)去查看某個(gè)運(yùn)行的容器的時(shí)候,我們可以使用命令:docker exec
更新應(yīng)用容器
當(dāng)我們需要更新修改應(yīng)用程序代碼的時(shí)候,需要重新更新制作應(yīng)用鏡像,并重新運(yùn)行應(yīng)用容器;如果我們之間修改代碼之后,重新制作鏡像,并重新運(yùn)行容器會(huì)出現(xiàn)端口沖突的問(wèn)題,因?yàn)樵瓉?lái)的舊容器還在運(yùn)行,直接重新運(yùn)行會(huì)發(fā)生沖突。更新方法是替換原來(lái)舊的容器。將舊 的容器給刪除掉。
獲取需要?jiǎng)h除的容器ID,使用docker ps命令獲取
停止運(yùn)行舊的容器,使用命令docker stop
停止容器之后,就可以移除該容器,使用命令docker rm
也可以使用命令docker rm -f
最后就可以重新運(yùn)行docker run -dp
共享應(yīng)用容器
想要共享你的應(yīng)用容器,首先的將你的鏡像給共享出去,共享鏡像,則需要docker倉(cāng)庫(kù),docker默認(rèn)的倉(cāng)庫(kù)是Docker Hub,Docker Hub倉(cāng)庫(kù)是最大的容器倉(cāng)庫(kù)和社區(qū),提供能我們免費(fèi)訪問(wèn)和使用,我們?cè)L問(wèn)Docker Hub只需要注冊(cè)一個(gè)Docker ID即可。
在Docker Hub上面注冊(cè)https://www.docker.com/pricing?utm_source=docker&utm_medium=webreferral&utm_campaign=docs_driven_upgrade
登錄到Docker Hub,創(chuàng)建一個(gè)倉(cāng)庫(kù),自定義個(gè)倉(cāng)庫(kù)名
共享的話,確保可見(jiàn)性為public,當(dāng)然也提供私人倉(cāng)庫(kù),供個(gè)人或者團(tuán)隊(duì)使用
然后就可以使用示例命令:docker push
登錄docker Hub:docker login - u docker_id
使用docker tag將要推送的鏡像名稱賦予一個(gè)新名稱:docker tag
然后可以直接推送鏡像了:docker push
共享鏡像之后,就可以在別的機(jī)子上面直接從你共享的倉(cāng)庫(kù)中拉取鏡像并運(yùn)行一個(gè)新的應(yīng)用容器實(shí)例。
容器數(shù)據(jù)持久化DB
當(dāng)我們運(yùn)行一個(gè)應(yīng)用容器之后,由于修改代碼,重新更新應(yīng)用容器,會(huì)發(fā)現(xiàn)之前的操作的數(shù)據(jù)不見(jiàn)了,為什么每次重啟容器之后,數(shù)據(jù)都被清除掉了?因?yàn)槊總€(gè)容器運(yùn)行之后,都擁有自己的獨(dú)立文件系統(tǒng),在其上面創(chuàng)建、更新和刪除文件都不會(huì)影響到其他容器,使用的知識(shí)暫時(shí)的存儲(chǔ)空間。因此我們需要將應(yīng)用容器操作的數(shù)據(jù)保存進(jìn)行持久化。
docker提供了存儲(chǔ)卷volumes對(duì)象,每個(gè)容器可以利用存儲(chǔ)卷可以將容器的文件系統(tǒng)路徑連接到宿主機(jī)的文件路徑,也就是說(shuō)容器的文件目錄裝載的是宿主機(jī)的文件目錄,容器對(duì)文件的更改在宿主機(jī)上也能看得到,如果重啟容器時(shí)也是裝載相同的目錄,則也就共享到原來(lái)相同的文件了。docker默認(rèn)是不使用volumes;使用volume有兩種類型:一種是直接命名volumes,另一種是綁定掛載volumes。
第一種直接創(chuàng)建并命名volume。
創(chuàng)建一個(gè)volumes,通過(guò)使用命令:docker volume create
將原來(lái)的運(yùn)行容器都停掉,使用一下命令重新啟動(dòng)容器(增加對(duì)volume的使用):docker run -dp
可以使用docker volume inspect
docker volume inspect
[
{
"CreatedAt": "創(chuàng)建時(shí)間",
"Driver": "local",
"Labels": {},
"Mountpoint": "數(shù)據(jù)存儲(chǔ)位置",
"Name": "命名vulumes的名字",
"Options": {},
"Scope": "local"
}
]
第二種:使用綁定掛載vulume
綁定掛載與直接命名volume區(qū)別在于:
直接命名volume的存儲(chǔ)位置有docker控制,有默認(rèn)路徑,并且可以查看volume信息
綁定掛載存儲(chǔ)位置不由docker控制,由我們自己定義
docker run -dp 3000:3000 \
-w /app -v "$(pwd):/app" \
參數(shù)說(shuō)明:
-w:設(shè)置容器運(yùn)行的工作目錄為/app
-v "$(pwd):/app" :綁定容器的工作目錄/app掛載到宿主機(jī)的當(dāng)前目錄上
Docker 容器 鏡像服務(wù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。