docker容器常用命令
最近打算突破一下docker的知識,買了一門課程,這里同步做一下筆記。
獲取鏡像
查詢鏡像
刪除鏡像
導(dǎo)入導(dǎo)出鏡像
啟動容器
進(jìn)入容器
查詢?nèi)萜?/span>
刪除容器
容器網(wǎng)絡(luò)
容器其他操作
容器持久化存儲
數(shù)據(jù)卷容器
基于容器制作鏡像
優(yōu)點:制作方便,只要進(jìn)入容器,安裝好環(huán)境,就可以制作一個新的鏡像,并部署到其他環(huán)境。
缺點:容器內(nèi)新增的服務(wù)必須在啟動后,再進(jìn)入容器啟動一次服務(wù),但是可以通過啟動時執(zhí)行指定命令來解決這個問題
基于Dockerfile制作鏡像
以上命令就是切換到/opt目錄,創(chuàng)建一個code子目錄,安裝vim和wget
使用鏡像啟動容器時默認(rèn)的運行命令,如果在docker run的時候,在后面帶上自定義命令,那么這個命令就會被替換掉,導(dǎo)致容器啟動的時候不會執(zhí)行,所以一般我們不用這個
和上面的CMD命令相似,但是不會被啟動容器時的自定義命令替換掉,一定會執(zhí)行;還有一個用法是在docker run后面的自定義命令可以作為ENT RYPOINT的命令參數(shù)傳入
從主機(jī)拷貝文件到容器中
和copy命令類似,拷貝文件到鏡像中,但是對于壓縮文件(含有tar的)拷貝過去會直接解壓
指定容器要對外暴露的端口
在dockerfile中聲明了VOLUME綁定目錄并不會在容器啟動的時候幫我們自動綁定目錄,那么VOLUME和-v有什么區(qū)別呢?假設(shè)我們在dockerfile中聲明了
那么我們使用不同的命令啟動時
所以如果一個鏡像制作的時候使用了VOLUME,那么每次啟動都會在宿主機(jī)上創(chuàng)建一個數(shù)據(jù)目錄,如果這個目錄里存在的東西很多,那么時間長了,我們就會發(fā)現(xiàn)宿主機(jī)上空間越來越小,即使你重啟容器也不行。所以要了解這個性質(zhì),針對性的清理docker目錄。
相當(dāng)于cd命令,區(qū)別是在dockerfile中使用了WORKDIR后,在它下面的語句,工作目錄都變成了WORKDIR指定的目錄
在dockerfile中設(shè)置環(huán)境變量,主要為了在執(zhí)行docker run的時候可以通過-e參數(shù)修改環(huán)境變量,這樣也可以使鏡像更加通用。例如MySQL安裝時要指定用戶名、密碼、綁定IP,如果直接在容器里面安裝,那么我們?nèi)绻薷牡脑?,必須登錄到容器中,進(jìn)行修改重啟。但是在dockerfile中指定了ENV變量,那么在docker run的時候就可以修改這些設(shè)置。
下面給一個簡單的dockerfile例子
在當(dāng)前目錄下創(chuàng)建dockerfile文件,并使用docker build命令制作鏡像
搭建私有鏡像庫
在很多企業(yè)中,都不能肆意的訪問外網(wǎng),那這樣是不是docker就沒法愉快的使用了呢?我們通常下載鏡像都是從docker hub官方倉庫下載的,如果在企業(yè)內(nèi)部搭建一個私有鏡像庫,那是不是就能像外網(wǎng)一樣使用docker了呢,docker官方為我們提供了非常簡單的搭建私有庫的方式:
好了,通過以上命令我們的私有鏡像庫就搭建好了,是不是很簡單呢?那么怎么使用呢?
vim /etc/docker/daemon.json
{
"insecure-registries": ["xx.xx.xx.xx:5000"]
}
systemctl restart docker
修改鏡像名稱,添加私有鏡像庫地址為前綴,然后push到鏡像庫
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)
送郵件至:operations@xinnet.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時
需注明出處:新網(wǎng)idc知識百科