Docker學(xué)習(xí)筆記 2020-10-22

安裝在CentOS 7.6 64bit 缕探。系統(tǒng)內(nèi)核要求在3.10以上。
容器是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用还蹲,及他們的運(yùn)行環(huán)境爹耗。

1.查看系統(tǒng)內(nèi)核

uname -r

2.安裝命令

yum -y install docker-io

3.啟動(dòng)命令

service docker start

4.查看版本

docker version

5.查看所有容器

docker ps -a
docker ps 查看運(yùn)行容器

6.啟動(dòng)容器

docker start [name]

7.停止容器

docker stop [name]

8.刪除容器

docker rm [name]
docker rm -f 強(qiáng)制刪

9.進(jìn)入容器

docker exec -it [name] /bin/bash

10.創(chuàng)建鏡像

①docker commit -m '例如git注釋' -a 'author' 鏡像id 鏡像命名
docker commit -m 'create image' -a 'Nan' 7b789b19757d my/image:v1
②Dockerfile
使用Dockerfile來創(chuàng)建鏡像,使用docker commit 雖然很容易拓展鏡像谜喊,但不便于團(tuán)隊(duì)分享鲸沮,我們可以使用docker build來創(chuàng)建一個(gè)新的鏡像,為此首先要?jiǎng)?chuàng)建一個(gè)Dockerfile文件锅论,這個(gè)文件中包含如何創(chuàng)建鏡像的指令讼溺。
a.首先新建一個(gè)目錄和Dockerfile
b.Dockerfile中輸入指令,每條指令都創(chuàng)建鏡像的一層最易。層數(shù)有限制怒坯,不能超過127,否則會(huì)報(bào)錯(cuò)藻懒。

cd docker
mkdir centos
cd centos
touch Dockerfile
vim Dcokerfile
# 注解
FROM centos    //FROM  以哪個(gè)鏡像為基礎(chǔ)
MAINTAINER NAN xxxx   //維護(hù)者信息
RUN yum -qqy install python   //RUN 開頭的指令會(huì)在創(chuàng)建中運(yùn)行剔猿,例如yum安裝python。yum需要指定參數(shù)嬉荆,不加-qqy可能會(huì)報(bào)錯(cuò)

docker build -t='my/centos_with_python:v1.0.1' .
這個(gè).很重要归敬,意味著從當(dāng)前路徑去找Dockerfile文件讀取文件,構(gòu)建鏡像
※在build進(jìn)程在執(zhí)行操作。它要做的第一件事情就是上傳這個(gè)Dockerfile內(nèi)容汪茧,因?yàn)樗械牟僮鞫家罁?jù)Dockerfile來進(jìn)行椅亚。然后,Dockerfile中的指令被一條一條的執(zhí)行舱污。每一步都創(chuàng)建一個(gè)新的容器呀舔,在容器中執(zhí)行指令并提交修改(就跟docker commit 一樣)。當(dāng)所有指令完成扩灯,返回最終的鏡像id媚赖。所有中間步驟所產(chǎn)生的容器都被刪除和清理。
不能超過127層珠插。
Dockerfile中還可以輸入其他的命令惧磺,例如可以使用ADD命令復(fù)制本地文件到鏡像中;用expose命令對(duì)外開放端口捻撑;用CMD命令描述容器啟動(dòng)后運(yùn)行的程序豺妓。

11.運(yùn)行鏡像

docker run -t -i my/image:v1
參數(shù)-t讓Docker分配一個(gè)偽終端并綁定在容器的標(biāo)準(zhǔn)輸入上,-i讓容器的標(biāo)準(zhǔn)輸入保持打開布讹。-d在后臺(tái)以守護(hù)態(tài)運(yùn)行(daemen)。
使用docker run 命令來啟動(dòng)容器训堆,docker在后臺(tái)運(yùn)行的標(biāo)準(zhǔn)操作包括
a.檢查本地是否存在指定的鏡像描验,不存在則從公有倉(cāng)庫(kù)下載
b.使用鏡像創(chuàng)建并啟動(dòng)容器
c.分配一個(gè)文件系統(tǒng),并在只讀的鏡像層外面掛在一層可讀可寫層坑鱼。
d.從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中去
e.從地址池分配一個(gè)ip地址給容器
f.執(zhí)行用戶指定的應(yīng)用程序
g.執(zhí)行完畢之后容器被終止

后臺(tái)運(yùn)行的容器我們?cè)趺催M(jìn)入:

①docker attach 是docker自帶的命令膘流。
docker attach 容器名
該命令有時(shí)候并不方便,因?yàn)樗峭降穆沉ぃ缬卸鄠€(gè)用戶attach到一個(gè)容器呼股,一個(gè)窗口命令阻塞,其他窗口都無法執(zhí)行画恰。
②nsenter命令:在util-linux包2.23版本后都有包含彭谁。nsenter可以訪問另一個(gè)進(jìn)程的進(jìn)程空間。
安裝:

wget ...util-linux...
tar 解壓
cd 
./configure 配置
cp nsenter /user/local/bin

為了連接到容器允扇,需要知道容器的PID缠局,可以使用nsenter獲取,如下:
PID=$(docker-pid 容器id)
docker-pid需要自己安裝考润,否則找不到命令
配好之后狭园,獲取到PID后,
nsenter --target 3291 --mount --uts --ipc --new --pid進(jìn)入容器

12.修改鏡像標(biāo)簽

docker tag 鏡像ID 修改后標(biāo)簽名

13.導(dǎo)入鏡像

必須是.tar.gz或tart 文件
cat ubuntu_elm.tar | docker import -my/ubuntu_elm:v1.1.0

14.上傳鏡像

用戶可以通過docker push命令糊治,把自己創(chuàng)建的鏡像上傳到倉(cāng)庫(kù)中共享唱矛。
docker push 鏡像名

15.保存鏡像到本地

docker save -o 保存的鏡像的名字 docker中鏡像的名字

16.將本地保存的鏡像導(dǎo)入到docker

①docker load --input 鏡像名
②docker load < 鏡像名

17.刪除鏡像

docker rmi image_id
docker rmi -f image_id 強(qiáng)制刪除

18.打印容器日志

docker logs 容器id

19.導(dǎo)出容器

docker export 容器id > 容器名

20.導(dǎo)入容器

cat centos.tar | docker import - my/centos:v1
還可以通過指定一個(gè)URL或者目錄來導(dǎo)入。
docker import http://..... 鏡像名
docker中可以使用docker load來導(dǎo)入鏡像,也可以使用docker import 來導(dǎo)入一個(gè)容器快照到docker鏡像绎谦。兩者的區(qū)別是容器快照將丟失所有的歷史記錄和元數(shù)據(jù)信息管闷。而鏡像保存完整的記錄,因此也更大一些燥滑。

Docker公有倉(cāng)庫(kù) Docker Hub

倉(cāng)庫(kù)是集中存放鏡像的地方渐北。容易混淆的是注冊(cè)服務(wù)器,它是管理倉(cāng)庫(kù)的服務(wù)器铭拧,每個(gè)服務(wù)器上可以有多個(gè)倉(cāng)庫(kù)赃蛛,每個(gè)倉(cāng)庫(kù)下可以有多個(gè)鏡像。因此倉(cāng)庫(kù)可以被認(rèn)為是一個(gè)具體的目錄搀菩。
例如呕臂,dl.dockerpool.com/centos來說,dl.dockerpool.com是注冊(cè)服務(wù)器地址肪跋,centos是一個(gè)倉(cāng)庫(kù)名字歧蒋。

Docker官方目前維護(hù)著一個(gè)公共倉(cāng)庫(kù),我們要是用這個(gè)倉(cāng)庫(kù)州既,需要登錄https://hub.docker.com網(wǎng)站谜洽,注冊(cè)一個(gè)賬號(hào)

在命令行中輸入docker login輸入用戶名密碼完成登錄。
成功后吴叶,本地用戶目錄的.docker目錄中將保留用戶的認(rèn)證信息阐虚。

要推送鏡像到Docker Hub,需要先登錄賬號(hào)蚌卤,然后使用docker push 鏡像名 推送鏡像

Docker 私有倉(cāng)庫(kù)

有時(shí)候实束,在公司內(nèi)部為了提高分享的速度,需要在公司內(nèi)部搭建一個(gè)本地倉(cāng)庫(kù)逊彭,供個(gè)人使用咸灿。

docker官方提供了一個(gè)工具docker-registry,我們可以借助這個(gè)工具構(gòu)建私有鏡像倉(cāng)庫(kù)
a.首先侮叮,使用docker search命令查找registry
b.docker pull registry
c.運(yùn)行registry : docker run -d -p 5000:5000 -v /root/docker/registry:/tmp/registry registry
默認(rèn)情況下避矢,倉(cāng)庫(kù)會(huì)創(chuàng)建在容器中的/tmp/registry目錄下,通過-v指定將鏡像文件存放在本地的目錄中囊榜。
d.搭建好了私有倉(cāng)庫(kù)后谷异,就可以上傳、下載锦聊、搜索鏡像了歹嘹。
e.查看本機(jī)ip地址:ifconfig 。將鏡像名字的前綴改成本機(jī)ip加端口 192.168.0.150:5000
f.docker push 192.168.0.150:5000/centos將鏡像推送到私有倉(cāng)庫(kù)孔庭。
g.局域網(wǎng)內(nèi)其他機(jī)器可以使用docker pull 鏡像名拉取鏡像尺上。

# docker創(chuàng)建六個(gè)redis節(jié)點(diǎn)
docker create --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6379
docker create --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6380
docker create --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6381
docker create --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6382
docker create --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6383
docker create --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6384
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末材蛛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子怎抛,更是在濱河造成了極大的恐慌卑吭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件马绝,死亡現(xiàn)場(chǎng)離奇詭異豆赏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)富稻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門掷邦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人椭赋,你說我怎么就攤上這事抚岗。” “怎么了哪怔?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵宣蔚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我认境,道長(zhǎng)胚委,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任叉信,我火速辦了婚禮亩冬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茉盏。我一直安慰自己,他們只是感情好枢冤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布鸠姨。 她就那樣靜靜地躺著,像睡著了一般淹真。 火紅的嫁衣襯著肌膚如雪讶迁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天核蘸,我揣著相機(jī)與錄音巍糯,去河邊找鬼。 笑死客扎,一個(gè)胖子當(dāng)著我的面吹牛祟峦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播徙鱼,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宅楞,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼针姿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厌衙,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤距淫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后婶希,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榕暇,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年喻杈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了彤枢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奕塑,死狀恐怖堂污,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情龄砰,我是刑警寧澤盟猖,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站换棚,受9級(jí)特大地震影響式镐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜固蚤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一娘汞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夕玩,春花似錦你弦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至揩页,卻和暖如春旷偿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背爆侣。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工萍程, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兔仰。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓茫负,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親乎赴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朽褪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355