01-docker基礎(chǔ)

1:什么是容器砸西?

容器就是在隔離的環(huán)境中運(yùn)行的一個(gè)進(jìn)程叶眉,如果進(jìn)程停止址儒,容器就會(huì)退出。隔離的環(huán)境擁有自己的系統(tǒng)文件衅疙,ip地址莲趣,主機(jī)名等


image.png

kvm虛擬機(jī),linux饱溢,系統(tǒng)文件

程序:代碼喧伞,命令 進(jìn)程:正在運(yùn)行的程序

2:容器和虛擬化的區(qū)別

linux容器技術(shù),容器虛擬化和kvm虛擬化的區(qū)別:
  • linux開機(jī)啟動(dòng)流程


    image.png
  • 容器啟動(dòng)流程: 共用宿主機(jī)內(nèi)核: 第一個(gè)進(jìn)程直接啟動(dòng)服務(wù)(nginx绩郎,httpd潘鲫,mysql)

kvm虛擬化:需要硬件的支持,需要模擬硬件肋杖,可以運(yùn)行不同的操作系統(tǒng)溉仑,啟動(dòng)時(shí)間分鐘級(jí)(開機(jī)啟動(dòng)流程)
容器:共用宿主機(jī)內(nèi)核,輕量級(jí)状植,損耗少浊竟,啟動(dòng)快,性能高津畸,只能運(yùn)行在linux系統(tǒng)上
虛擬機(jī):需要硬件的支持振定,需要模擬硬件,需要走開機(jī)啟動(dòng)流程洼畅,可以運(yùn)行不同的操作系統(tǒng)

  • 3:容器技術(shù)的發(fā)展過程:

1):chroot技術(shù)吩案,新建一個(gè)子系統(tǒng)(擁有自己完整的系統(tǒng)文件)
2):linux容器(lxc) linux container(namespaces 命名空間 隔離環(huán)境 及cgroups 進(jìn)程資源限制)

3:docker容器

  • docker是一種軟件的打包技術(shù)

centos7.6 2G 10.0.0.11 docker01 host解析 centos7.6 2G 10.0.0.12 docker02 host解析

Docker是通過進(jìn)程虛擬化技術(shù)(namespaces及cgroups cpu、內(nèi)存帝簇、磁盤io等)來提供容器的資源隔離與安全保障等徘郭。由于Docker通過操作系統(tǒng)層的虛擬化實(shí)現(xiàn)隔離,所以Docker容器在運(yùn)行時(shí)丧肴,不需要類似虛擬機(jī)(VM)額外的操作系統(tǒng)開銷残揉,提高資源利用率。 namespace 資源隔離 cgroups 進(jìn)程的資源限制 kvm 虛擬磁盤文件芋浮,資源隔離 kvm 資源限制抱环,--cpus --memory

docker 初期把lxc二次開發(fā),libcontainer

4:docker的安裝

10.0.0.11:修改主機(jī)名和host解析

rm -fr /etc/yum.repos.d/local.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y

5:docker的主要組成部分

docker是傳統(tǒng)的CS架構(gòu)分為docker client和docker server,向mysql一樣

  • 命令:docker version
[root@docker01 ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:25:41 2019
 OS/Arch:           linux/amd64
 Experimental:      false
  • docker主要組件有:鏡像纸巷、容器镇草、倉(cāng)庫(kù), 網(wǎng)絡(luò),存儲(chǔ)

6:?jiǎn)?dòng)第一個(gè)容器

  • 啟動(dòng)容器必須需要一個(gè)鏡像瘤旨,倉(cāng)庫(kù)存儲(chǔ)鏡像 容器---鏡像---倉(cāng)庫(kù)
  • docker初次體驗(yàn): 安裝Nginx步驟: 官網(wǎng)下載Nginx源碼包wget
    tar 創(chuàng)建Nginx用戶

1.配置docker鏡像加速

vi  /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}   

2.docker啟動(dòng)nginx
docker run -d -p 80:80 nginx

run(創(chuàng)建并啟動(dòng)一個(gè)容器) 等于
-d 放在后臺(tái)
-p 端口映射
nginx docker鏡像的名字

7:docker的鏡像管理

搜索鏡像? docker search 選鏡像的建議: 1梯啤,優(yōu)先考慮官方 2,stars數(shù)量多
官方鏡像倉(cāng)庫(kù)地址:hub.docker.com

獲取鏡像? docker pull(push)?
鏡像加速器:阿里云加速器存哲,daocloud加速器因宇,中科大加速器七婴,Docker 中國(guó)官方鏡像加速:https://registry.docker-cn.com?
官方pull docker pull centos:6.8(沒有指定版本,默認(rèn)會(huì)下載最新版)
私有倉(cāng)庫(kù)pull docker pull daocloud.io/huangzhichong/alpine-cn:latest

  • 鏡像管理相關(guān)命令
查看鏡像列表? docker images 或者 docker image ls 
刪除鏡像? docker rmi 例子:docker image rm centos:latest 
導(dǎo)出鏡像? docker save 例子:docker image save centos -o docker-centos7.4.tar.gz 
導(dǎo)入鏡像? docker load 例子:docker image load -i docker-centos7.4.tar.gz?

8:docker的容器管理

  • 創(chuàng)建并運(yùn)行一個(gè)容器
    docker run -d -p 80:80 nginx:latest

run(創(chuàng)建并運(yùn)行一個(gè)容器)
-d ----放在后臺(tái)
-p ----端口映射
-v ----源地址(宿主機(jī)):目標(biāo)地址(容器)
nginx:latest ----docker鏡像的名字

  • 命名一個(gè)容器
    docker run -it --name centos6 centos:6.9 /bin/bash

-it ----分配交互式的終端interactive tty
--name ----指定容器的名字
/bin/sh ----覆蓋容器的初始命令

運(yùn)行容器
    docker run image_name   
    docker run ==== docker create  + docker start
啟動(dòng)容器
    docker start
停止容器
    docker stop CONTAINER_ID
殺死容器
    docker kill container_name
查看容器列表
    docker ps(-a -l  -q)
刪除容器
    docker rm
批量刪除容器
    docker rm -f `docker ps -a -q`

9:docker容器的網(wǎng)絡(luò)訪問(端口映射)

  • 首先要開啟宿主機(jī)的內(nèi)核轉(zhuǎn)發(fā)參數(shù),通過iptables來實(shí)現(xiàn)的端口映射
[root@docker01 ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
  • 指定映射(docker 會(huì)自動(dòng)添加一條iptables規(guī)則來實(shí)現(xiàn)端口映射) ?
    -p hostPort:containerPort ? 宿主機(jī)端口映射到容器
    -p ip:hostPort:containerPort 多個(gè)容器都想使用80端口
    -p 10.0.0.100::53/udp 使用宿主機(jī)的10.0.0.100這個(gè)ip地址的隨機(jī)端口的udp協(xié)議映射容器的udp53端口 ?
    -p 81:80 –p 443:443 可以指定多個(gè)-p

10:docker的數(shù)據(jù)卷管理

nginx 站點(diǎn) /usr/share/nginx/html

持久化 數(shù)據(jù)卷(文件或目錄)?
-v 卷名:/data (第一次卷是空,會(huì)容器的數(shù)據(jù)復(fù)制到卷中,如果卷里面有數(shù)據(jù),把卷數(shù)據(jù)的掛載到容器中)? -v src(宿主機(jī)的目錄):dst(容器的目錄) 數(shù)據(jù)卷容器? --volumes-from(跟某一個(gè)已經(jīng)存在的容器掛載相同的卷)?

  • 基于nginx啟動(dòng)一個(gè)容器察滑,監(jiān)聽80和81打厘,訪問80,出現(xiàn)nginx默認(rèn)歡迎首頁(yè)贺辰,訪問81户盯,出現(xiàn)靜態(tài)頁(yè)面
    -p 80:80 -p 81:81 -v xxx:xxx -v xxx:xxxx 基于nginx多端口的多站點(diǎn)
    ①.編寫nginx.conf文件
[root@docker01 ~]# cat nginx/nginx.conf 
server {
      listen 80;
      root /usr/share/nginx/html;

      location / {
      index index.html;
        }
}
server {
        listen 81;
        root /opt;

        location / {
        index index.html;
        }
}

②.下載靜態(tài)頁(yè)面代碼

image.png

③.根據(jù)鏡像起一個(gè)容器,并將目錄掛載
docker run -d -p 80:80 -p 81:81 -v /root/yiliao:/opt -v /root/nginx:/etc/nginx/conf.d/ nginx:latest

11:手動(dòng)將容器保存為鏡像

docker commit 容器id或者容器的名字 新的鏡像名字[:版本號(hào)可選]

  • 1:基于容器制作鏡像
    ①.根據(jù)鏡像啟動(dòng)一個(gè)容器
    [root@docker01 ~]# docker run -it centos6.9
    ②.將代碼防止nginx的默認(rèn)目錄下
    配源(centos6)
配源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
安裝nginx
yum install -y nginx
刪除原來的默認(rèn)頁(yè)面并加入新的頁(yè)面
rm -f /usr/share/nginx/html/ *
vi /usr/share/nginx/html/index.html
重啟nginx
nginx -s reload

③.將安裝好的服務(wù)器提交為鏡像
docker container commit optimistic_brahmagupta yiliao:v1
④.使用鏡像啟動(dòng)容器訪問
docker run -d -p 88:80 yiliao:v1 nginx -g 'daemon off'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末魂爪,一起剝皮案震驚了整個(gè)濱河市先舷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滓侍,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牲芋,死亡現(xiàn)場(chǎng)離奇詭異撩笆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缸浦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門夕冲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人裂逐,你說我怎么就攤上這事歹鱼。” “怎么了卜高?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵弥姻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我掺涛,道長(zhǎng)庭敦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任薪缆,我火速辦了婚禮秧廉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拣帽。我一直安慰自己疼电,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布减拭。 她就那樣靜靜地躺著蔽豺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪峡谊。 梳的紋絲不亂的頭發(fā)上茫虽,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天刊苍,我揣著相機(jī)與錄音,去河邊找鬼濒析。 笑死正什,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的号杏。 我是一名探鬼主播婴氮,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼盾致!你這毒婦竟也來了主经?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤庭惜,失蹤者是張志新(化名)和其女友劉穎罩驻,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體护赊,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惠遏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了骏啰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片节吮。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖判耕,靈堂內(nèi)的尸體忽然破棺而出透绩,到底是詐尸還是另有隱情,我是刑警寧澤壁熄,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布帚豪,位于F島的核電站,受9級(jí)特大地震影響请毛,放射性物質(zhì)發(fā)生泄漏志鞍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一方仿、第九天 我趴在偏房一處隱蔽的房頂上張望固棚。 院中可真熱鬧,春花似錦仙蚜、人聲如沸此洲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呜师。三九已至,卻和暖如春贾节,著一層夾襖步出監(jiān)牢的瞬間汁汗,已是汗流浹背衷畦。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留知牌,地道東北人祈争。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像角寸,于是被迫代替她去往敵國(guó)和親菩混。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容