02 : docker - 介紹和安裝

docker容器
1:什麼是容器?
容器就是在隔離的環境運行的一個進程,若是進程中止,容器就會銷燬。隔離的環境擁有本身的文件系統,ip地址,主機名等mysql

2:容器和虛擬化的區別
linux容器技術,容器虛擬化和kvm虛擬化的區別
kvm虛擬化: 須要硬件的支持,須要模擬硬件,能夠運行不一樣的操做系統,啓動時間分鐘級(開機啓動流程)
linux開機啓動流程 --bios開機硬件自檢 --bios設置的優先啓動項 --讀取mbr引導 -- 加載內核 --啓動第一個進程
kvm解決了硬件和操做系統之間的依賴
kvm獨立的虛擬磁盤,xml配置文件linux

容器虛擬化:不須要硬件的支持。不須要模擬硬件,共用宿主機的內核,啓動時間秒級(沒有開機啓動流程)
docker解決了軟件和操做系統環境之間的依賴,可以讓獨立服務或應用程序在不一樣的環境中,獲得相同的運行結果。
docker鏡像有本身的文件系統。
docker容器是一種輕量級、可移植、自包含的軟件打包技術,使應用程序能夠在幾乎任何地方以相同的方式運行。開發人員在本身筆記本上建立並測試好的容器,無需任何修改就可以在生產系統的虛擬機、物理服務器或公有云主機上運行。ios


總結:
(1)與宿主機使用同一個內核,性能損耗小;
(2)不須要指令級模擬;
(3)容器能夠在CPU核心的本地運行指令,不須要任何專門的解釋機制;
(4)避免了準虛擬化和系統調用替換中的複雜性;
(5)輕量級隔離,在隔離的同時還提供共享機制,以實現容器與宿主機的資源共享。nginx


3 :docker容器
Docker是經過內核虛擬化技術(namespaces及cgroups cpu、內存、磁盤io等)來提供容器的資源隔離與安全保障等。因爲Docker經過操做系統層的虛擬化實現隔離,因此Docker容器在運行時,不須要相似虛擬機(VM)額外的操做系統開銷,提升資源利用率。sql

容器自己是一個進程,佔用資源過多的狀況下,系統內存不足,可能會引發 oom == out of memory 機制。被kill-9殺掉,所以穩定性不如虛擬機好。也正是所以,才誕生了容易編排工具(最出名的k8s,保證容器高可用。)docker

docker的主要目標是"Build,Ship and Run any App,Angwhere",構建,運輸,到處運行(號稱一次構建,處處運行)
docker是一種軟件的打包技術
(構建,運輸,到處運行)解釋:
構建:作一個docker鏡像
運輸:docker pull
運行:啓動一個容器
每個容器,他都有本身的文件系統rootfs.json

 

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
安裝docker:
yum install docker-ce -y (docker社區版(ce),企業版要錢哦)centos

5:docker的主要組成部分
docker是傳統的CS架構分爲docker client和docker server,和mysql同樣安全

命令:docker version
[root@controller ~]# systemctl start docker (啓動,加入開機自啓enable)
[root@controller ~]# docker version
Client: Docker Engine - Community
Version: 19.03.2
API version: 1.40
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 05:28:55 2019
OS/Arch: linux/amd64
Experimental: false服務器

Server: Docker Engine - Community
Engine:
Version: 19.03.2
API version: 1.40 (minimum version 1.12)
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 05:27:34 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683

docker info(若是要作zabbix監控)

docker主要組件有:鏡像、容器、倉庫
啓動容器必須須要一個鏡像,倉庫中只存儲鏡像
容器---鏡像---倉庫

6:啓動第一個容器(docker 運行nginx)
##配置docker鏡像加速(還有一種方法是修改docker的啓動文件)
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://aeckruos.mirror.aliyuncs.com"]
}
重啓:
[root@controller ~]# systemctl restart docker

運行nginx鏡像:
[root@controller ~]# docker run -d -p 80:80 nginx
run(建立並運行一個容器)
-d 放在後臺
-p 宿主機端口映射到容器端口
nginx docker鏡像的名字

[root@controller ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6127/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6206/master
tcp6 0 0 :::80 :::* LISTEN 7653/docker-proxy
tcp6 0 0 :::22 :::* LISTEN 6127/sshd
tcp6 0 0 ::1:25 :::* LISTEN 6206/master
訪問nginx:
[root@controller ~]# curl -I 192.168.6.129 或者網頁訪問:宿主機IP:192.168.6.129
HTTP/1.1 200 OK
Server: nginx/1.17.4
...

7:docker的鏡像管理
查看已有鏡像:
docker image ls
docker images
搜索鏡像
docker search centos
NAME DESCRIPTION (描述) STARS(點贊次數) OFFICIAL(是否官方鏡像) AUTOMATED(自動構建)
centos The official build of CentOS. 5616 [OK]
ansible/centos7-ansible Ansible on Centos7 124 [OK]
選鏡像的建議:
1,優先考慮官方
2,starts數量多

獲取鏡像
docker pull(push)(實際內部是使用的這個命令: docker image pull)
鏡像加速器:阿里雲加速器,daocloud加速器,中科大加速器,Docker 中國官方鏡像加速:https://registry.docker-cn.com

docker pull alpine (指定版本alpine:3.8 沒有指定版本,默認會下載最新版)
docker pull index.tenxcloud.com/tenxcloud/httpd:latest(下載私有倉庫鏡像,域名/用戶名或者項目名/容器的鏡像名稱+版本)


查看鏡像
docker images
刪除鏡像
docker rmi 例子:docker image rm centos:latest
導出鏡像
docker save 例子:docker image save centos > docker-centos7.4.tar.gz
導入鏡像
docker load 例子:docker image load -i docker-centos7.4.tar.gz

查看鏡像屬性
docker inspect 例子:docker image inspect load -i docker-centos7.4.tar.gz
上傳鏡像
docker push 例子:docker image push xxx 後面再講這個命令怎麼用
tag打標籤
docker tag 例子:docker image tag xxx 後面再講這個命令怎麼用,結合push

相關文章
相關標籤/搜索