1、容器是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用,及他們的運(yùn)行環(huán)境。容器是Docker中的一個(gè)重要的概念。
2、docker容器的啟動(dòng)有三種方式
a.交互方式,基于鏡像新建容器并啟動(dòng)
例如我們可以啟動(dòng)一個(gè)容器,打印出當(dāng)前的日歷表
[root@rocketmq-nameserver4 ~]# docker run my/python:v1 cal ##my/python:v1為鏡像名和標(biāo)簽
![](/d/20211016/eb21dd8d44c6790ec07e72e01390ffa9.gif)
我們還可以通過(guò)指定參數(shù),啟動(dòng)一個(gè)bash交互終端。
[root@rocketmq-nameserver4 ~]# docker run -it my/python:v1 /bin/bash
![](/d/20211016/ea513959ed5c024f5a169226e6b3a801.gif)
參數(shù)-t讓Docker分配一個(gè)偽終端并綁定在容器的標(biāo)準(zhǔn)輸入上,-i讓容器的標(biāo)準(zhǔn)輸入保持打開。
使用docker run命令來(lái)啟動(dòng)容器,docker在后臺(tái)運(yùn)行的標(biāo)準(zhǔn)操作包括
1.檢查本地是否存在指定的鏡像,不存在則從公有倉(cāng)庫(kù)下載
2.使用鏡像創(chuàng)建并啟動(dòng)容器
3.分配一個(gè)文件系統(tǒng),并在只讀的鏡像層外面掛載一層可讀可寫層
4.從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口道容器中去
5.從地址池分配一個(gè)ip地址給容器
6.執(zhí)行用戶指定的應(yīng)用程序
7.執(zhí)行完畢之后容器被終止
![](/d/20211016/ab92446ae0ff93d5556391f69a5af793.gif)
my/sinatra:v2基于training/sinatra鏡像進(jìn)行修改后的鏡像,training/sinatra為公有倉(cāng)庫(kù)上的鏡像。
b、短暫方式,直接將一個(gè)已經(jīng)終止的容器啟動(dòng)運(yùn)行起來(lái)
可以使用docker start命令,直接將一個(gè)已經(jīng)終止的容器啟動(dòng)運(yùn)行起來(lái)。
[root@rocketmq-nameserver4 ~]# docker run my/python:v1 /bin/echo hello test
hello test
命令執(zhí)行完,控制臺(tái)會(huì)打印"hello test",container就終止了,不過(guò)并沒(méi)有消失,可以用"docker ps -n 5 "看一下最新前5個(gè)的container,第一個(gè)就是剛剛執(zhí)行過(guò)的container,可以再次執(zhí)行一遍:docker start container_id
不過(guò)這次控制臺(tái)看不到”hello test”了,只能看到ID,用logs命令才能看得到:docker logs container_id??梢钥吹絻蓚€(gè)”hello test”了,因?yàn)檫@個(gè)container運(yùn)行了兩次。
![](/d/20211016/9d13a9741a5722cd446d26ef5a1c0038.gif)
c、daemon方式,守護(hù)態(tài)運(yùn)行
即讓軟件作為長(zhǎng)時(shí)間服務(wù)運(yùn)行,這就是SAAS啊!
例如我們啟動(dòng)centos后臺(tái)容器,每隔一秒打印當(dāng)天的日歷。
$ docker run -d centos /bin/sh -c "while true;do echo hello docker;sleep 1;done"
啟動(dòng)之后,我們使用docker ps -n 5查看容器的信息
要查看啟動(dòng)的centos容器中的輸出,可以使用如下方式:
$ docker logs $CONTAINER_ID ##在container外面查看它的輸出
$ docker attach $CONTAINER_ID ##連接上容器實(shí)時(shí)查看:
3、終止容器
使用docker stop $CONTAINER_ID來(lái)終止一個(gè)運(yùn)行中的容器。并且可以使用docker ps -a來(lái)看終止?fàn)顟B(tài)的容器。
![](/d/20211016/c1119f8a0cc9eb6d7870c53ea180cf27.gif)
終止?fàn)顟B(tài)的容器,可以使用docker start來(lái)重新啟動(dòng)。
![](/d/20211016/bc23aa31aa4e48f5fa964a864a7241b0.gif)
使用docker restart命令來(lái)重啟一個(gè)容器。
![](/d/20211016/d69c9f93d9f8389f92ec7ecea626a88d.gif)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。