Docker容器01

一宁否、什么是docker容器窒升?

容器就是在隔離的環(huán)境運行的一個進程,如果進程停止慕匠,容器就會銷毀饱须。隔離的環(huán)境擁有自己的系統(tǒng)文件,ip地址台谊,主機名蓉媳、進程管理等
程序:代碼譬挚,命令
進程:正在運行的程序

二、容器和虛擬化的區(qū)別

1酪呻、linux容器技術(shù)减宣,容器虛擬化和kvm虛擬化的區(qū)別:

kvm虛擬化: 需要硬件的支持,需要模擬硬件玩荠,可以運行不同的操作系統(tǒng)漆腌,啟動時間分鐘級(開機啟動流程)

2、linux開機啟動流程:

  • bios開機硬件自檢
  • 根據(jù)bios設(shè)置的優(yōu)先啟動項boot 網(wǎng)卡 硬盤 u盤 光驅(qū)
  • 讀取grub引導(dǎo)(mbr分區(qū)) 2T UEFI(gpt分區(qū)) mbr硬盤分區(qū)信息阶冈,內(nèi)核加載路徑
  • 加載內(nèi)核
  • 啟動第一個進程/sbin/init或systemd
  • 系統(tǒng)初始化完成
  • 運行服務(wù) nginx

3闷尿、容器啟動流程

  • 共用宿主機內(nèi)核
  • 啟動第一個進程,服務(wù)nginx眼溶,httpd悠砚,mysql等。

4堂飞、容器特點

優(yōu)勢:容器灌旧,共用宿主機linux內(nèi)核,容器的第一個進程直接運行服務(wù)绰筛,輕量級枢泰,損耗少,啟動快铝噩,性能高衡蚂。
劣勢:只支持linux,不支持其他系統(tǒng)骏庸。

5毛甲、kvm與docker區(qū)別

kvm:分鐘級啟動,占用磁盤空間大具被,網(wǎng)絡(luò)延時大玻募,資源隔離較好,支持多系統(tǒng)一姿。
docker:秒啟動七咧,占用磁盤空間小,網(wǎng)絡(luò)延時小叮叹,資源隔離較差艾栋,只支持linux系統(tǒng)。

三蛉顽、容器技術(shù)的發(fā)展過程

1蝗砾、chroot技術(shù)

改變根目錄,新建一個子系統(tǒng)(擁有自己完整的系統(tǒng)文件)

2、linux容器(lxc)

linux container(namespaces 命名空間悼粮,隔離環(huán)境及cgroups 進程資源限制)
cgroups :限制一個進程能夠使用的硬件資源拇泣。cpu,內(nèi)存矮锈,硬盤io等霉翔。

四、容器lxc創(chuàng)建

1苞笨、安裝epel源

yum install epel-release -y

2债朵、編譯epel源配置文件

vi  /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

3、安裝lxc

yum install lxc-* -y
yum install libcgroup* -y
yum install bridge-utils.x86_64 -y

4瀑凝、橋接網(wǎng)卡

[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
echo 'TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=virbr0' >/etc/sysconfig/network-scripts/ifcfg-eth0


[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-virbr0 
echo 'TYPE=Bridge
BOOTPROTO=static
NAME=virbr0
DEVICE=virbr0
ONBOOT=yes
IPADDR=10.0.0.11
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=180.76.76.76' >/etc/sysconfig/network-scripts/ifcfg-virbr0

5序芦、啟動cgroup

systemctl start cgconfig.service

6、啟動lxc

systemctl start lxc.service

7粤咪、創(chuàng)建lxc容器

方法1:
lxc-create -t download -n centos6 -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images -d centos -r 6 -a amd64
方法2:
lxc-create -t centos -n test

8谚中、為lxc容器設(shè)置root密碼

[root@controller ~]# chroot /var/lib/lxc/test/rootfs passwd
Changing password for user root.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

9、為容器指定ip和網(wǎng)關(guān)

vi /var/lib/lxc/centos7/config
lxc.network.name = eth0
lxc.network.ipv4 = 10.0.0.111/24
lxc.network.ipv4.gateway = 10.0.0.254

10寥枝、啟動容器

lxc-start -n centos7

五宪塔、Docker容器安裝

1、更改主機IP地址

10.0.0.11:修改主機名和host解析

2囊拜、刪除之前默認的yum源

rm -fr /etc/yum.repos.d/local.repo

3某筐、配置阿里云yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

4、下載安裝docker

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

小提示:docker分兩個版本冠跷,一個是ce社區(qū)版Community Edition南誊,另一個是ee企業(yè)版Enterprise Edition。

六蜜托、檢查啟動docker

[root@doceker01 yum.repos.d]# docker version
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        2d0083d
 Built:             Thu Jun 27 17:56:06 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@doceker01 yum.repos.d]# systemctl start docker
[root@doceker01 yum.repos.d]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@doceker01 yum.repos.d]# docker version
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        2d0083d
 Built:             Thu Jun 27 17:56:06 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       2d0083d
  Built:            Thu Jun 27 17:26:28 2019
  OS/Arch:          linux/amd64
  Experimental:     false

七抄囚、docker系統(tǒng)命令

查看系統(tǒng)信息
docker system info
查看進程信息
docker system events
查看磁盤情況
docker system df
刪除所有容器,清除
docker system prune
查看鏡像列表
docker images docker image ls
刪除鏡像
docker image rm centos:latest
導(dǎo)出鏡像
docker image save centos > docker-centos7.4.tar.gz

docker image save -o docker_nginx.tar.gz nginx:latest
導(dǎo)入鏡像
docker load 例子:docker image load -i docker-centos7.4.tar.gz

八橄务、docker主要組件

鏡像幔托、容器、倉庫, 網(wǎng)絡(luò)仪糖,存儲
鏡像:做好的系統(tǒng)
容器:鏈接鏡像系統(tǒng)文件
倉庫:純鏡像

九柑司、啟動第一個容器

1迫肖、配置源

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

2锅劝、啟動docker

systemctl restart docker

3、下載鏡像

docker run -d -p 80:80 nginx
run(創(chuàng)建并運行一個容器)
-d 放在后臺
-p 端口映射
nginx docker鏡像的名字

4蟆湖、docker的鏡像管理

搜索鏡像
docker search
選鏡像的建議:
1故爵,優(yōu)先考慮官方
2,stars數(shù)量多

5、下載鏡像

docker pull(push)默認下載最新版本
鏡像加速器:阿里云加速器诬垂,daocloud加速器劲室,中科大加速器,Docker 中國官方鏡像加速:https://registry.docker-cn.com

官方pull docker pull centos:6.8(沒有指定版本结窘,默認會下載最新版)
私有倉庫pull docker pull daocloud.io/huangzhichong/alpine-cn:latest

6很洋、docker的容器管理

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

docker run -it --name centos6 centos:6.9 /bin/bash
-it 分配交互式的終端
--name 指定容器的名字
/bin/sh覆蓋容器的初始命令

十、啟動關(guān)閉查詢?nèi)萜?/h1>

啟動容器

docker run image_name
docker run -it image_name CMD
docker run ==== docker create + docker start

停止容器

docker stop CONTAINER_ID

殺死容器

docker kill container_name

查看容器列表

docker ps
docker ps –a

十一隧枫、容器相關(guān)操作實驗

目的:調(diào)試和排錯

1喉磁、進入容器

[root@doceker01 ~]# docker run -it centos:6.9
docker attach(使用同一個終端)
docker attach [OPTIONS] CONTAINER
使用ctrl + p,ctrl + q官脓,可查看歷史命令
[root@doceker01 ~]# docker container attach b553a8e556dc

退出后歷史命令消失
docker exec  (會分配一個新的終端tty
docker exec [OPTIONS] CONTAINER COMMAND [ARG...])

2协怒、刪除容器

刪除容器
docker rm
[root@doceker01 ~]# docker container rm +容器名稱

批量刪除容器
docker rm -f docker ps -a -q

小提示:docker容器內(nèi)的第一個進程(初始命令)必須一直處于前臺運行的狀態(tài)(必須夯住)卑笨,否則這個容器孕暇,就會處于退出狀態(tài)!

3赤兴、端口映射

[root@doceker01 ~]# docker run -p 1080:80 -d nginx:latest
指定映射(docker 會自動添加一條iptables規(guī)則來實現(xiàn)端口映射)
-p hostPort:containerPort
-p ip:hostPort:containerPort 多個容器都想使用80端口
-p ip::containerPort(隨機端口)
-p hostPort:containerPort:udp
-p 10.0.0.100::53:udp
-p 81:80 –p 443:443 可以指定多個-p

隨機映射
docker run -P (隨機端口)

通過iptables來實現(xiàn)的端口映射

4妖滔、手動制作鏡像

docker commit 容器id或者容器的名字 新的鏡像名字[:版本號可選]
1):基于容器制作鏡像
docker run -it centos:6.9
yum install httpd
yum install openssh-server
/etc/init.d/sshd start
vi /init.sh

!/bin/bash

/etc/init.d/httpd start
/usr/sbin/sshd -D
chmod +x /init.sh
2)將容器提交為鏡像
docker commit oldboy centos6-ssh-httpd:v1
3)測試鏡像功能是否可用
手動制作的鏡像,傳輸時間長
鏡像初始命令
制作一個kodexplorer網(wǎng)盤docker鏡像桶良。nginx + php-fpm(httpd + php)

第一步:啟動一個容器铛楣,并在容器中安裝好軟件。第二步:把安裝好軟件的容器提交為鏡像艺普。第三步:測試鏡像能不能夯住和服務(wù)是否正常啟動簸州。

[root@doceker01 ~]# docker container commit b66dc34e7d95 centos6.9_ssh:v1
sha256:b6e7ff54c44526f249a7e5a40ed47bef6e3206c524b4b663b201fe69da8ffda6
[root@doceker01 ~]# docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
centos6.9_ssh                         v1                  b6e7ff54c445        11 seconds ago      307MB
busybox                               latest              e4db68de4ff2        2 weeks ago         1.22MB
nginx                                 latest              719cd2e3ed04        2 weeks ago         109MB
centos                                6.9                 adf829198a7f        10 months ago       195MB
daocloud.io/huangzhichong/alpine-cn   latest              e8289dcc1d4b        2 years ago         3.98MB
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市歧譬,隨后出現(xiàn)的幾起案子岸浑,更是在濱河造成了極大的恐慌,老刑警劉巖瑰步,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矢洲,死亡現(xiàn)場離奇詭異,居然都是意外死亡缩焦,警方通過查閱死者的電腦和手機读虏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袁滥,“玉大人盖桥,你說我怎么就攤上這事√夥” “怎么了揩徊?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我塑荒,道長熄赡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任齿税,我火速辦了婚禮彼硫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凌箕。我一直安慰自己乌助,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布陌知。 她就那樣靜靜地躺著他托,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仆葡。 梳的紋絲不亂的頭發(fā)上赏参,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音沿盅,去河邊找鬼把篓。 笑死,一個胖子當(dāng)著我的面吹牛腰涧,可吹牛的內(nèi)容都是我干的韧掩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼窖铡,長吁一口氣:“原來是場噩夢啊……” “哼疗锐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起费彼,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤滑臊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后箍铲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雇卷,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年颠猴,在試婚紗的時候發(fā)現(xiàn)自己被綠了关划。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡翘瓮,死狀恐怖贮折,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情春畔,我是刑警寧澤脱货,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站律姨,受9級特大地震影響振峻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜择份,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一扣孟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荣赶,春花似錦凤价、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至剩燥,卻和暖如春慢逾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灭红。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工侣滩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人变擒。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓君珠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親娇斑。 傳聞我的和親對象是個殘疾皇子策添,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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

  • 數(shù)組特性: 基于特性2:連續(xù)的內(nèi)存空間和相同類型數(shù)據(jù): 理解:隨機訪問特性(根據(jù)下標(biāo)進行訪問) 理解:插入操作(注...
    寫啥呢閱讀 352評論 1 1