操作容器
一氨肌、啟動(dòng)
- 基于鏡像新建一個(gè)容器啟動(dòng)
- 重新啟動(dòng)終止?fàn)顟B(tài)的容器
1. 新建并啟動(dòng)
命令主要是docker run
痹扇。
例如:
$ docker run -t -i ubuntu:18:04 bin/bash
root@af8bae53bdd3:/
其中斑鸦,-t選項(xiàng)讓Docker分配一個(gè)偽終端(pseudo-tty)并綁定到容器的標(biāo)準(zhǔn)輸入上刻帚,-i則讓容器的標(biāo)準(zhǔn)輸入保持打開。
利用docker run
來創(chuàng)建容器時(shí)创南,docker在后臺運(yùn)行的標(biāo)準(zhǔn)操作包括:
- 檢查本地是否存在指定的鏡像伦忠,不存在就從公有倉庫下載
- 利用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器
- 分配一個(gè)文件系統(tǒng),并在只讀的鏡像層外面掛載一層可讀寫層
- 從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中去
- 從地址池配置一個(gè) ip 地址給容器
- 執(zhí)行用戶指定的應(yīng)用程序
- 執(zhí)行完畢后容器被終止
2. 啟動(dòng)已終止容器
可以利用docker container start
命令稿辙,直接將一個(gè)終止的容器啟動(dòng)運(yùn)行昆码。
容器的核心為所執(zhí)行的應(yīng)用程序,所需要的資源都是應(yīng)用程序運(yùn)行所必需的邻储。除此
之外赋咽,并沒有其它的資源《帜龋可以在偽終端中利用 ps 或 top 來查看進(jìn)程信息脓匿。
二、守護(hù)態(tài)運(yùn)行
更多的時(shí)候宦赠,需要讓 Docker 在后臺運(yùn)行而不是直接把執(zhí)行命令的結(jié)果輸出在當(dāng)前宿主機(jī)下陪毡。此時(shí),可以通過添加 -d 參數(shù)來實(shí)現(xiàn)勾扭。此時(shí)容器在后臺運(yùn)行并不會(huì)把輸出的結(jié)果(STDOUT)打印到宿主機(jī)上面(輸出結(jié)果可以用docker logs
查看)
三毡琉、終止容器
docker container stop
:終止一個(gè)運(yùn)行中的容器
docker容器中指定的應(yīng)用終結(jié)時(shí),容器也自動(dòng)終止
docke container ls
:查看容器信息
docker container ls -a
:查看終止?fàn)顟B(tài)的容器
docker container start
:啟動(dòng)處于終止?fàn)顟B(tài)的容器
docker container restart
:終止一個(gè)運(yùn)行的容器妙色,然后再重新啟動(dòng)
四桅滋、進(jìn)入容器
使用-d參數(shù)后,容器啟動(dòng)后會(huì)進(jìn)入后臺燎斩,此時(shí)虱歪,若想要進(jìn)入容器進(jìn)行操作,可以使用docker attach
或者docker exec
栅表,推薦使用docker exec
笋鄙。
進(jìn)入容器后,如果在這個(gè)stdin中exit怪瓶,通過attach進(jìn)入的容器也會(huì)終止萧落,exec則不會(huì)。
五洗贰、導(dǎo)出和導(dǎo)入容器
docker export
:
$ docker export 7691a814370e > ubuntu.tar
docker import
從快照文件中再導(dǎo)入為鏡像找岖,也可以指定URL或者某個(gè)目錄來導(dǎo)入,如:
$ docker import http://example.com/exampleimage.tgz example/imagerepo
注:用戶既可以使用 docker load 來導(dǎo)入鏡像存儲文件到本地鏡像庫敛滋,也可以使用 docker import 來導(dǎo)入一個(gè)容器快照到本地鏡像庫许布。這兩者的區(qū)別在于容器快照文件將丟棄所有的歷史記錄和元數(shù)據(jù)信息(即僅保存容器當(dāng)時(shí)的快照狀態(tài)),而鏡像存儲文件將保存完整記錄绎晃,體積也要大蜜唾。此外,從容器快照文件導(dǎo)入時(shí)可以重新指定標(biāo)簽等元數(shù)據(jù)信息庶艾。
六袁余、刪除容器
docker container rm
刪除一個(gè)處于終止?fàn)顟B(tài)的容器,加上-f
可以刪除一個(gè)運(yùn)行中的容器咱揍,docker會(huì)發(fā)送SIGKILL信號給容器颖榜。
docker container prune
清理所有處于終止?fàn)顟B(tài)的容器。