快速安裝Docker詳細(xì)步驟教程
了解Docker是如何的與眾不同,如此的蒂花之秀后,我們緊接著從Docker的基礎(chǔ)循序漸進(jìn)的講解。
一、Docker的基本組成
1、Docker服務(wù)端和客戶端
在對Docker的基本組成講解之前,我們需要明白的是Docker是一個客戶端-服務(wù)端(C/S)架構(gòu)程序。不明白什么是C/S架構(gòu)對吧,我這里就簡單說明下,一般來說,應(yīng)用程序架構(gòu)分為兩種:
客戶端-服務(wù)端(C/S) :
Client - Server(C/S) = 客戶端 - 服務(wù)器。例如: QQ,迅雷,快播等。夜深人靜的時候,你躲在被子里,用自己安裝的快播神器看不知名的大片,快播軟件就需要和服務(wù)器進(jìn)行通信,服務(wù)器源源不斷的把各種畫面信息返回給快播神器。
這種需要安裝軟件才能與服務(wù)器進(jìn)行數(shù)據(jù)通信的方式就是C/S架構(gòu)。
C/S系統(tǒng)結(jié)構(gòu)
瀏覽器 - 服務(wù)端(B/S) :
Browser - Server(B/S) = 瀏覽器 - 服務(wù)器。例如:所有的網(wǎng)站都是B/S架構(gòu),你找你朋友,借一步說話,要了個網(wǎng)址,直接瀏覽器輸入就可以樂呵呵的看不知名的大片。這種不需要安裝軟件,直接有個網(wǎng)址就能看片的方式就屬于B/S架構(gòu)。
B/S系統(tǒng)結(jié)構(gòu)
總的來說,C/S每一個客戶端都必須安裝和配置專用的軟件。B/S最大的優(yōu)點(diǎn)就是不用安裝任何專門的軟件,只要有一個瀏覽器就可以。
docker引擎是一個c/s結(jié)構(gòu)的應(yīng)用。Docker客戶端只需要向Docker服務(wù)端或者守護(hù)進(jìn)程發(fā)出請求,服務(wù)端或者守護(hù)進(jìn)程完成所有工作返回結(jié)果主要組件見下圖:
- Server是一個常駐進(jìn)程
- REST API 實(shí)現(xiàn)了client和server間的交互協(xié)議
- CLI 實(shí)現(xiàn)容器和鏡像的管理,為用戶提供統(tǒng)一的操作界面
2、Docker的基本組成
從上節(jié),我們可以知道Docker使用的是C/S架構(gòu),Client 通過接口與Server進(jìn)程通信實(shí)現(xiàn)容器的構(gòu)建,運(yùn)行和發(fā)布。client和server可以運(yùn)行在同一臺集群,也可以通過跨主機(jī)實(shí)現(xiàn)遠(yuǎn)程通信。
鏡像(image):
Docker 鏡像就是一個只讀的模板,可以通過這個模板來創(chuàng)建容器。一個鏡像是可以創(chuàng)建多個容器的,就好像java里的類和對象一樣,類是鏡像,容器是對象。
容器(container):
Docker 利用容器來運(yùn)行應(yīng)用。容器是從鏡像創(chuàng)建而來的運(yùn)行實(shí)例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。
倉庫(repository):
倉庫就是存放鏡像的地方,分為公有倉庫(Public)和私有倉庫(Private)兩種形式,其中官方倉庫 Docker Hub是國外的,而國內(nèi)很多公司,像阿里云,華為云等都有自己的容器服務(wù),Docker默認(rèn)使用的是國外的倉庫,我們在國內(nèi)訪問就很慢,所以我們在學(xué)習(xí)的時候就需要配置鏡像加速。
上面的介紹,我想可能對于剛剛學(xué)習(xí)Docker的老鐵來說,有點(diǎn)生澀難懂,我剛剛學(xué)習(xí)Docker的時候也是一樣。不過沒關(guān)系,我舉個通俗的例子講解:
我們需要注意的是Docker本身并不是容器,它只是創(chuàng)建容器的工具,是應(yīng)用容器引擎。
要想搞明白Docker,只需要知道兩點(diǎn)即可:
第一點(diǎn),Build, Ship and Run 譯為:構(gòu)建鏡像,運(yùn)輸鏡像,運(yùn)行鏡像
Build
(構(gòu)建鏡像):鏡像就像是集裝箱包括文件以及運(yùn)行環(huán)境等等資源。
Ship
(運(yùn)輸鏡像):主機(jī)和倉庫間運(yùn)輸,這里的倉庫就像是超級碼頭一樣。
Run
(運(yùn)行鏡像):運(yùn)行的鏡像就是一個容器,容器就是運(yùn)行程序的地方。
舉個例子:
我爹年紀(jì)大了,想回老家蓋房子,我們來到老家,找了平時比較熱鬧的地方,買了塊地基準(zhǔn)備蓋房,于是我和我爹搬水泥,石頭,各種材料,費(fèi)了九牛二虎之力終于蓋好房子了。結(jié)果,住了一段時間,我爹說這兒太吵了,想換個清靜地方。按照傳統(tǒng)的辦法,我們只能再次搬石頭、砍木頭、畫圖紙、蓋房子。但是,哆啦A夢從百寶袋里掏出一個魔法棒,可以把我和我爹蓋的房子,打包做成“鏡像”,放在我的背包里。
等我到了安靜的地方,找塊空地,就用這個“鏡像”,復(fù)制一套房子,擺在那邊,拎包入住。所以Docker的第二點(diǎn)就是:Build once ,Run anywhere 譯為: 一次搭建,到處能用。
從上面的例子,放在我包里的鏡像就是 Docker鏡像,而我在安靜的空地,用魔法棒復(fù)制的一套房子就是一個Docker容器,我的背包,就是Docker倉庫。
既然,我和我爹蓋的房子可以打包做成鏡像,那么別人房子也可以做成鏡像,這樣一來,我們是不是就可以直接住各種豪宅,豈不美滋滋。這么多房子做成的鏡像,那就得需要一個大的包來裝,于是乎,這個大包就變成了專業(yè)術(shù)語里的倉庫(repository)。因此,官方提供了一個 Docker Hub給大家進(jìn)行共享房子鏡像,當(dāng)然你也可以搞私有倉庫,獨(dú)樂樂,不共享自己的房子鏡像給別人。
二、Docker的在線安裝
Docker官方建議在Ubuntu中安裝,因?yàn)镈ocker是基于Unbantu發(fā)布的,而且一般Docker出現(xiàn)的問題Ubuntu是最先更新或者打補(bǔ)丁的,在很多版本的Centos中是不支持更新最新的一些補(bǔ)丁包的。
由于我們學(xué)習(xí)的環(huán)境都使用的Centos,因此這里將Docker安裝到Centos上。
注意:
Linux要求內(nèi)核3.0以上
CentOS 需要是7版本的
既然有官方提示的注意,那么我們?nèi)绾尾榭聪到y(tǒng)內(nèi)核呢?
1、使用uname命令驗(yàn)證
[root@localhost docker]# uname -r 3.10.0-1127.el7.x86_64
2、卸載已安裝的Docker
如果已經(jīng)安裝過Docker,請先卸載,再重新安裝,來確保整體的環(huán)境是一致的。
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
3、安裝yum工具包和存儲驅(qū)動
yum install -y yum-utils
4、設(shè)置鏡像的倉庫
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo #上述方法默認(rèn)是從國外的,不推薦 #推薦使用國內(nèi)的,阿里云docker鏡像 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、安裝docker
注意 : docker-ce 社區(qū)版 而ee是企業(yè)版。這里我們使用社區(qū)版即可。
yum install docker-ce docker-ce-cli containerd.io
6、啟動docker
systemctl start docker
7、設(shè)置開機(jī)啟動
systemctl enable docker
8、安裝后查看Docker版本
[root@localhost docker]# docker version Client: Docker Engine - Community Version: 19.03.13 API version: 1.40 Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:03:45 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.13 API version: 1.40 (minimum version 1.12) Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:02:21 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.3.7 GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683
9、配置阿里云鏡像加速
鑒于國內(nèi)網(wǎng)絡(luò)問題,后續(xù)拉取 Docker 鏡像十分緩慢,我們可以需要配置加速器來解決這個問題。
登錄阿里云
搜索 “ 容器鏡像服務(wù) ”
獲取加速器地址
通過修改 daemon 配置文件 /etc/docker/daemon.json
來使用加速器
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://pak31uuv.mirror.aliyuncs.com"] } EOF # 重啟 Docker systemctl daemon-reload systemctl restart docker
注意:
阿里云的本人自己賬號的鏡像地址(需要自己注冊有一個屬于你自己的): https://xxxx.mirror.aliyuncs.com
10、驗(yàn)證配置是否成功
docker info # 輸出如下 Client: Debug Mode: false Server: Containers: 15 Running: 12 Paused: 0 Stopped: 3 Images: 24 Server Version: 19.03.6 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: systemd Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: runc version: init version: Security Options: apparmor seccomp Profile: default Kernel Version: 4.15.0-96-generic Operating System: Ubuntu 18.04.4 LTS OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 7.767GiB Name: docker-services ID: YZSB:WJFB:RS4K:V22L:IVGK:GZVZ:UQL4:MCCR:MQ4X:6HRE:T5RM:53M5 Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: https://k7da99jp.mirror.aliyuncs.com/ https://dockerhub.azk8s.cn/ https://registry.docker-cn.com/ Live Restore Enabled: false WARNING: No swap limit support
三、Docker內(nèi)網(wǎng)環(huán)境的離線安裝
由于在很多情況下需要安裝docker的虛擬機(jī)或服務(wù)器無法訪問互聯(lián)網(wǎng),因此需要離線安裝docker。
準(zhǔn)備工作
一臺可以訪問互聯(lián)網(wǎng)的虛擬機(jī)或服務(wù)器,操作系統(tǒng)不限,改機(jī)器可以訪問擬安裝docker的機(jī)器
STEP 1 : 以下操作在可以訪問互聯(lián)網(wǎng)的機(jī)器進(jìn)行
下載安裝包
訪問https://download.docker.com/linux/static/stable/ 選擇合適的版本并下載,
筆者用的是 :
https://download.docker.com/linux/static/stable/x86_64/docker-18.09.6.tgz
STEP 2: 將下載的安裝包上傳到擬安裝的機(jī)器
STEP 3: 以下操作在擬安裝的機(jī)器上進(jìn)行
1、解壓縮安裝包
tar -zxvf docker-18.09.6.tgz
2、復(fù)制解壓縮后的文件到指定文件夾
cp docker/* /usr/bin/
3、注冊編輯docker服務(wù)
vim /etc/systemd/system/docker.service
4、復(fù)制下列內(nèi)容到該文檔中
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
5、添加權(quán)限后啟動
chmod +x /etc/systemd/system/docker.service
6、重新加載配置文件
systemctl daemon-reload
7、啟動Docker
systemctl start docker
8、設(shè)置開機(jī)自啟
systemctl enable docker.service
9、驗(yàn)證是否安裝成功
systemctl status docker docker -v
四、運(yùn)行第一個容器
我們以 Nginx 為例,體驗(yàn) Docker 是如何運(yùn)行容器的
# 下載鏡像 docker pull nginx # 運(yùn)行容器 docker run --name nginx-container -p 80:80 -d nginx
瀏覽器輸入虛擬機(jī)地址即可訪問 Nginx
以上就是快速安裝Docker詳細(xì)步驟教程的詳細(xì)內(nèi)容,更多關(guān)于Docke安裝步驟的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Linux下使用Docker部署MinIO存儲服務(wù)實(shí)現(xiàn)遠(yuǎn)程上傳的方法
MinIO是一個開源的對象存儲服務(wù)器,可以在各種環(huán)境中運(yùn)行,例如本地、Docker容器、Kubernetes集群等,本文主要是Linux下通過Docker部署MinIO存儲服務(wù)實(shí)現(xiàn)遠(yuǎn)程上傳的文章,感興趣的朋友一起看看吧2023-11-11docker實(shí)現(xiàn)將本地文件復(fù)制到docker容器內(nèi)
這篇文章主要介紹了docker實(shí)現(xiàn)將本地文件復(fù)制到docker容器內(nèi)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01docker容器源碼部署httpd用存儲卷部署網(wǎng)站(推薦)
這篇文章主要介紹了docker容器源碼部署httpd用存儲卷部署網(wǎng)站,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12Docker中Cgroup資源配置的實(shí)現(xiàn)
Cgroup不僅可以限制被namespace?隔離起來的資源,還可以為資源設(shè)置權(quán)重、計算使用量、操控進(jìn)程啟停等,本文主要介紹了Docker中Cgroup資源配置的實(shí)現(xiàn),感興趣的可以了解一下2023-09-09詳解如何解決docker容器無法通過IP訪問宿主機(jī)問題
這篇文章主要介紹了詳解如何解決docker容器無法通過IP訪問宿主機(jī)問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01Docker搭建 Nginx+PHP+MySQL 環(huán)境并部署WordPress實(shí)踐
本文給大家分享的是作者基于Docker搭建 Nginx+PHP+MySQL 環(huán)境并部署WordPress的詳細(xì)過程,非常的全面,有需要的小伙伴可以參考下2017-02-02