原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會棺棵,謝謝!
原文鏈接地址:「走進k8s」Docker 基本命令(二)
上次說了簡單的介紹了docker熄捍,基本的概念和架構(gòu)烛恤,并實際操作了如何安裝docker。這次就說說Docker 鏡像和容器的基本操作命令余耽。
(一)鏡像
了解git的老鐵都知道有g(shù)ithub缚柏,其實docker也有個官方的鏡像倉庫叫dockerhub。
https://hub.docker.com/
- ①獲取鏡像
docker pull [選項] [Docker Registry 地址[:端口]/]倉庫名[:標簽]
Docker 鏡像倉庫地址:地址的格式一般是 <域名/IP>[:端口號]碟贾,默認地址是 Docker Hub币喧。
在library的鏡像也就是官方鏡像需要:名稱
如果是個人的鏡像需要:用戶名/軟件名
docker pull redis:4.0
- ②鏡像列表
倉庫名稱,標簽袱耽,鏡像 ID杀餐、創(chuàng)建時間,鏡像大小朱巨。鏡像ID是唯一標識史翘。
docker image ls
官網(wǎng)redis大小:40MB冀续,但是下載到本地后是102MB琼讽。壓縮后的體積。在鏡像下載和上傳過程中鏡像是保持著壓縮狀態(tài)的沥阳,因此 Docker Hub 所顯示的大小是網(wǎng)絡(luò)傳輸中更關(guān)心的流量大小跨琳。
- ③鏡像層次
我們可以使用history命令來看看,可以發(fā)現(xiàn)redis包含很多個鏡像層桐罕。Docker的鏡像的基礎(chǔ)是聯(lián)合文件系統(tǒng)脉让,它支持將文件系統(tǒng)中的修改信息作為一次提交,并層層疊加功炮,外界看到的是最外層的鏡像溅潜。(比如外界只看到Tomcat鏡像,而中間疊加了很多層鏡像)
#剛才那個鏡像ID
docker image 67f7ad418fdf
- ④刪除鏡像
刪除本地的鏡像
docker image rm 鏡像名:版本號
docker rmi 鏡像ID
- ⑤鏡像遷移
場景:之前博客是通過容器的方式來進行的后來從華為云遷移到了阿里云薪伏,需要將容器打包成鏡像滚澜,然后在將鏡像打包成文件。將文件拷貝到另一臺阿里云的機器上嫁怀。
打包
docker save 鏡像名稱 | gzip > alpine-latest.tar.gz
到阿里云機器后將打包文件轉(zhuǎn)換成鏡像
docker load -i alpine-latest.tar.gz
(二)容器
- ①創(chuàng)建容器
-it:這是兩個參數(shù)设捐,一個是 -i:交互式操作借浊,一個是 -t 終端。我們這里打算進入 bash 執(zhí)行一些命令并查看返回結(jié)果萝招,因此我們需要交互式終端蚂斤。
centos:7:這是指用 ubuntu:16.04 鏡像為基礎(chǔ)來啟動容器。
/bin/bash:放在鏡像名后的是命令槐沼,這里我們希望有個交互式 Shell曙蒸,因此用的是 bash
name:容器指定一個名稱
p :端口映射(-p 80:80)80端口映射到外部的80端口上,前一個是映射岗钩,后一個容器內(nèi)的端口
[root@5cd9daf8961b /] 開啟的容器終端纽窟,exit退出后狀態(tài)就變成status (Exited 狀態(tài))
--restart=always 無論容器退出代碼是什么,docker 都會自動重啟容器兼吓。
限制重啟次數(shù):--restart=on-failure:5 ,當容器退出代碼不為0時臂港,最多重啟5次。這個很有用周蹭,我自己的博客服務(wù)器經(jīng)常流量大了就掛了趋艘,有了這個命令掛了一會就自動重啟了,不用半夜在給我發(fā)郵件了凶朗。這只是在我的場景下比較合適的方式。在實際生產(chǎn)中還是使用容器編排工具比較好显拳。
docker run -it centos:7 /bin/bash
exit
啟動一個后臺運行的棚愤,如果不加入后臺運行的,容器退出后杂数,容器就關(guān)閉了
加入-d 后臺運行宛畦,status (up 狀態(tài))
docker run -it -d centos:7 /bin/bash
- ②容器列表
如果不加-all,顯示正常運行的容器揍移,如果加-all顯示所有的容器
docker container ls -all
- ③進入容器
存在可能修改容器內(nèi)部的參數(shù)的情況次和,所以需要進入容器。
exec -it 開啟交互進入容器中那伐。
docker exec -it 容器ID /bin/bash
- ④終止和啟動容器
在實際應(yīng)用中有這種場景:更換springboot的容器的jar包踏施,需要終止容器。更換完成后需要重新啟動容器罕邀。
docker container stop 容器名稱/容器ID
docker container start 容器名稱/容器ID
- ⑤容器日志
查看容器日志
docker log -f 容器名稱/容器ID
- ⑥刪除容器
刪除容器的操作
docker container rm 容器ID
批量刪除容器畅形,慎用
docker rm -f $(docker ps -qa)
- ⑦容器改變
容器內(nèi)發(fā)生的改變
docker diff 容器ID
- ⑧容器變成鏡像
就是在原有鏡像的基礎(chǔ)上,再疊加上容器的存儲層诉探,并構(gòu)成新的鏡像日熬。
--author:指定修改的作者
--message:記錄本次修改的內(nèi)容
docker commit 命令除了學習之外,還有一些特殊的應(yīng)用場合肾胯,比如被入侵后保存現(xiàn)場等竖席。但是耘纱,不要使用 docker commit 定制鏡像,定制鏡像應(yīng)該使用Dockerfile來完成毕荐。
不規(guī)范的鏡像不是docker推薦的揣炕。
docker commit --author 'www.idig8.com' --message '修改打包成鏡像' 鏡像ID 名稱:版本號
(三)總體信息查看
多少個鏡像,多少個容器东跪,多少個外部畸陡,建立了多少個緩存
docker system df
PS:基本容器和鏡像的常用命令都給老鐵們說了,如果你會git或者linux命令比較熟悉docker并不復(fù)雜虽填,原理還是很重要的丁恭。