鏡像與容器
docker中容器和鏡像的關(guān)系是什么?docker的整個(gè)生命周期有三部分組成:鏡像(image)+容器(container)+倉庫(repository)。容器是由鏡像實(shí)例化而來。
也可以說,鏡像是文件,容器是進(jìn)程。容器是基于鏡像創(chuàng)建的,即容器中的進(jìn)程依賴于鏡像中的文件
基礎(chǔ)命令
systemctl start|stop|restart status docker 啟動(dòng)docker服務(wù)管理
docker search imageName 在倉庫搜索鏡像名
docker pull imageName 下載上面的鏡像,鏡像位置: /var/lib/docker
docker images <imageName>(可選) |docker image ls 查看鏡像
鏡像重命名
對本地鏡像的tag name重命名,并生成一個(gè)新的鏡像
yxl@servename:~$ docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 15.10 9b9cb95443b5 4 years ago 137MB
docker tag [老的鏡像名稱]:[老的鏡像TAG] [新的鏡像名稱]:[新的鏡像TAG]
docker tag ubuntu:15.10 ubuntu-new:latest
ubuntu-new latest 9b9cb95443b5 4 years ago 137MB
ubuntu 15.10 9b9cb95443b5 4 years ago 137MB
鏡像刪除
dokcer rim 命令參數(shù) 鏡像ID
docker rmi 命令參數(shù) (-f) 鏡像名稱:鏡像版本
鏡像導(dǎo)入導(dǎo)出
docker save -o 鏡像名.tar 本地鏡像名稱|ID //導(dǎo)出
docker load < 鏡像名.tar //導(dǎo)入
docekr laod --input 鏡像名.tar //導(dǎo)入
cat 模板文件.tar |docekr import - 自定義鏡像名稱
鏡像歷史和詳細(xì)信息
docker history 鏡像名稱:版本號(hào)
docker inspect 命令參數(shù) 鏡像名稱:鏡像版本號(hào)
docker inspect 命令參數(shù) 鏡像ID
容器查看,創(chuàng)建,啟動(dòng)
docker ps |docker ps -a (-a顯示所有運(yùn)行過的容器)
docker create 參數(shù)命令 依賴鏡像 容器內(nèi)命令 容器內(nèi)命令參數(shù)//創(chuàng)建一個(gè)待運(yùn)行的容器
命令參數(shù):-t 在新容器內(nèi)指定一個(gè)偽終端或終端。
-i 允許你對容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互
--name 自定義容器名
docker created -it --name nginx-newname nginx ls -a
docker ps -a 即可參看上述容器被運(yùn)行過
容器啟動(dòng)
- 啟動(dòng)待啟動(dòng)或已關(guān)閉容器
docker start 容器ID或名稱
- 基于鏡像信件內(nèi)容器并啟動(dòng)
docker run 命令參數(shù) 鏡像名稱 執(zhí)行的命令
命令參數(shù):-t 在新容器內(nèi)指定一個(gè)偽終端或終端。
-i 允許你對容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互
--name 自定義容器名
-d 在后端運(yùn)行容器并打印容器ID
--rm 容器退出后自動(dòng)刪除容器
docker run --rm --name nginxNewName nginx /bin/echo "hello world"
- 守護(hù)進(jìn)程啟動(dòng)docker
docker run -d nginx
容器的暫停,取消暫停,重啟
docker pause |unpause 容器ID或名稱
docker restart 容器ID或名稱
容器關(guān)閉,終止,刪除
docker stop 容器ID或名稱 //延遲執(zhí)行關(guān)閉一個(gè)處于暫?;蜻\(yùn)行狀態(tài)的容器
docker kill 容器ID或名稱 //強(qiáng)制并立即關(guān)閉一個(gè)處于暫?;蜻\(yùn)行狀態(tài)的容器
docker rm -f(強(qiáng)制刪除在運(yùn)行的) 容器ID或名稱
docker rm -f $(docker ps -a -q)批量刪除容器
容器進(jìn)入與退出
退出:exit,ctrl+D
進(jìn)入
docker run -it --name 重命名容器 依賴鏡像 /bin/bash
docker exec -it 容器ID或名稱 //手動(dòng)進(jìn)入
#!/bin/bash
#定義進(jìn)入倉庫函數(shù)
docker_in(){
CONTAINER_ID=$1
PID=$(docker inspect --format {{.State.Pid}} $CONTAINER_ID)
nsenter --target $PID --mount -uts --ipc --net --pid
}
docker_in $1
基于容器創(chuàng)建鏡像
//將本地運(yùn)行的容器創(chuàng)建鏡像
docker commit -m "變更信息" -a "作者" 依賴鏡像 容器名稱:版本號(hào)
docker export 導(dǎo)出的容器名稱.tar
cat 導(dǎo)出容器名稱.tar |docker import - 生成的鏡像名稱
數(shù)據(jù)管理(數(shù)據(jù)卷,數(shù)據(jù)卷容器)
//用于數(shù)據(jù)持久化-數(shù)據(jù)卷
docker run -itd --name 自定義容器名稱 -v 宿主機(jī)目錄:容器數(shù)據(jù)卷目錄 依賴鏡像
//使用特定的容器作為數(shù)據(jù)卷,這個(gè)容器就叫數(shù)據(jù)卷容器
1.創(chuàng)建數(shù)據(jù)卷容器
docker create -v /data-temp --name 自定義數(shù)據(jù)卷容器名稱 依賴鏡像
2. 創(chuàng)建多個(gè)容器與上述數(shù)據(jù)卷容器進(jìn)行交互
docker run --volumes-from 上述數(shù)據(jù)卷自定義容器名稱 --name 當(dāng)前容器自定義名稱 依賴鏡像
數(shù)據(jù)備份
1.創(chuàng)建一個(gè) 掛載數(shù)據(jù)卷容器 的 容器(存在備份目錄backup,和共享目錄data-temp)
2.上述容器掛載宿主機(jī)本地目錄作為備份目錄
3.將數(shù)據(jù)卷容器的內(nèi)容備份到宿主機(jī)本地目錄掛載的數(shù)據(jù)卷容器中
4.完成備份任務(wù)之后刪除創(chuàng)建數(shù)據(jù)卷的容器
docker run -it --rm --volumes-from 自定義數(shù)據(jù)備份數(shù)據(jù)卷容器的容器名 -v 宿主機(jī)目錄:備份用數(shù)據(jù)卷容器備份目錄 依賴鏡像 壓縮備份命令
docker run -it --rm --volumes-from v-temp -v /home/yxl/backup:/backup nginx tar -zcPf /backup/data-temp.tar.gz /data-temp
網(wǎng)絡(luò)管理
宿主機(jī)與容器端口之間的映射
docker run -d -P 宿主機(jī)IP::容器端口 --name 容器名稱 鏡像依賴//隨機(jī)端口映射 port:32768++
dockrt run -p 宿主機(jī)IP:宿主機(jī)端口:容器端口 --name 容器名稱 鏡像依賴
dockrt run -p 宿主機(jī)IP(可忽略):宿主機(jī)端口:容器端口 --name 容器名稱 鏡像依賴.
dockrt run -p 宿主機(jī)端口0:容器端口0 宿主機(jī)端口1:容器端口1 --name 容器名稱 鏡像依賴