一.認(rèn)識(shí)docker
Docker是一種用于構(gòu)建、打包和運(yùn)行應(yīng)用程序的開源平臺(tái)。它基于操作系統(tǒng)級(jí)虛擬化技術(shù),可以將應(yīng)用程序和其依賴的庫(kù)、環(huán)境等資源打包到一個(gè)可移植的容器中,形成一個(gè)輕量級(jí)、獨(dú)立的可執(zhí)行單元。
開發(fā)者在本地編譯測(cè)試通過(guò)的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機(jī))、bare metal、OpenStack 集群和其他的基礎(chǔ)應(yīng)用平臺(tái)。
簡(jiǎn)單的理解,Docker類似于集裝箱,各式各樣的貨物,經(jīng)過(guò)集裝箱的標(biāo)準(zhǔn)化進(jìn)行托管,而集裝箱和集裝箱之間沒(méi)有影響。也就是說(shuō),Docker平臺(tái)就是一個(gè)軟件集裝箱化平臺(tái),這就意味著我們自己可以構(gòu)建應(yīng)用程序,將其依賴關(guān)系一起打包到一個(gè)容器中,然后這容器就很容易運(yùn)送到其他的機(jī)器上進(jìn)行運(yùn)行,而且非常易于裝載、復(fù)制、移除,非常適合軟件彈性架構(gòu)。 因此,就像船只、火車或卡車運(yùn)輸集裝箱而不論其內(nèi)部的貨物一樣,軟件容器充當(dāng)軟件部署的標(biāo)準(zhǔn)單元,其中可以包含不同的代碼和依賴項(xiàng)。 按照這種方式容器化軟件,開發(fā)人員和 IT 專業(yè)人員只需進(jìn)行極少修改或不修改,即可將其部署到不同的環(huán)境。
二.docker的基本概念
1. 容器(Container):
? ? ? ? Docker鏡像是Docker容器的靜態(tài)定義,它包含了容器運(yùn)行所需的程序、庫(kù)、資源、配置等文件。鏡像的分層存儲(chǔ)結(jié)構(gòu)使得鏡像可以被復(fù)用、定制,同時(shí)也使得鏡像可以更好地管理和存儲(chǔ)。容器是基于鏡像運(yùn)行的實(shí)體,它具有自己的獨(dú)立的命名空間、網(wǎng)絡(luò)配置、進(jìn)程空間和用戶ID空間,因此容器封裝的應(yīng)用比直接在宿主運(yùn)行更加安全。容器存儲(chǔ)層的生存周期和容器一樣,容器消亡時(shí),容器存儲(chǔ)層也隨之消亡。為了保證容器存儲(chǔ)層的無(wú)狀態(tài)化和高性能,應(yīng)該使用數(shù)據(jù)卷或綁定宿主目錄進(jìn)行文件寫入操作。數(shù)據(jù)卷的生存周期獨(dú)立于容器,容器刪除或重新運(yùn)行后,數(shù)據(jù)不會(huì)丟失。
即:
容器是基于鏡像創(chuàng)建的獨(dú)立運(yùn)行環(huán)境,它包含了應(yīng)用程序及其所有依賴項(xiàng),如所需的庫(kù)、環(huán)境變量等。
容器在多個(gè)操作系統(tǒng)層面上實(shí)現(xiàn)了資源的隔離,使得應(yīng)用程序可以在一個(gè)統(tǒng)一的環(huán)境中運(yùn)行,并且不會(huì)相互干擾。
容器可以快速啟動(dòng)、停止和刪除,這使得應(yīng)用程序的部署和管理變得非常方便。
2. 鏡像(Image):
? ? ? ? Docker鏡像是一個(gè)特殊的文件系統(tǒng),包含了操作系統(tǒng)完整的root文件系統(tǒng),其體積往往很大。在設(shè)計(jì)時(shí),Docker使用Union FS技術(shù)將其設(shè)計(jì)為分層存儲(chǔ)的架構(gòu),每一層構(gòu)建完就不會(huì)再發(fā)生改變。因此,在構(gòu)建鏡像時(shí),需要小心,每一層盡量只包含該層需要添加的東西,任何額外的東西應(yīng)該在該層構(gòu)建結(jié)束前清理掉。分層存儲(chǔ)的特征使得鏡像的復(fù)用和定制變得更容易。
即:
鏡像是Docker容器的構(gòu)建塊,它包含了應(yīng)用程序運(yùn)行所需的一切內(nèi)容。
鏡像是只讀的,它可以從底層文件系統(tǒng)和元數(shù)據(jù)中構(gòu)建,這使得鏡像具有可重復(fù)性和可分發(fā)性。
鏡像可以通過(guò)Dockerfile文件定義和構(gòu)建。Dockerfile是一個(gè)文本文件,其中包含了一組指令,用于指導(dǎo)Docker構(gòu)建過(guò)程。
鏡像具有層次結(jié)構(gòu),每個(gè)層代表了在構(gòu)建過(guò)程中進(jìn)行的一項(xiàng)更改。這種分層結(jié)構(gòu)提供了高效的鏡像分享和存儲(chǔ)方式。
3. 倉(cāng)庫(kù)(Repository):
? ? ? ? Docker Registry是一個(gè)集中存儲(chǔ)鏡像文件的地方,類似于我們之前常用的代碼倉(cāng)庫(kù)。它可以包含多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)可以包含多個(gè)標(biāo)簽,每個(gè)標(biāo)簽對(duì)應(yīng)一個(gè)鏡像。倉(cāng)庫(kù)名通常以兩段式路徑形式出現(xiàn),前者表示多用戶環(huán)境下的用戶名,后者則是對(duì)應(yīng)的軟件名。倉(cāng)庫(kù)分為公開倉(cāng)庫(kù)和私有倉(cāng)庫(kù)兩種形式,即Docker Registry公開服務(wù)和私有Docker Registry。
即:
倉(cāng)庫(kù)是用于存儲(chǔ)和管理Docker鏡像的地方。它類似于代碼版本控制系統(tǒng)中的代碼倉(cāng)庫(kù)。
公共倉(cāng)庫(kù),如Docker Hub,是一個(gè)全球性的服務(wù),提供了大量的公共鏡像供用戶獲取和使用。
私有倉(cāng)庫(kù)通常由個(gè)人或組織在本地或云端搭建,用于存儲(chǔ)和共享私有鏡像。這種方式可以確保鏡像的安全性和私密性。
倉(cāng)庫(kù)可以包含多個(gè)倉(cāng)庫(kù)鏡像標(biāo)簽(Tag),每個(gè)標(biāo)簽代表一個(gè)特定版本的鏡像。標(biāo)簽可以用于區(qū)分鏡像的不同版本和配置。
3.1.Docker Registry 公開服務(wù)
? ? ? ? Docker Registry是一個(gè)開放給用戶使用的Registry服務(wù),允許用戶免費(fèi)上傳、下載公開的鏡像,并可能提供收費(fèi)服務(wù)供用戶管理私有鏡像。最常使用的公開服務(wù)是Docker Hub,它是默認(rèn)的Registry,擁有大量高質(zhì)量的官方鏡像。
? ? ? ? 在國(guó)內(nèi)訪問(wèn)Docker Hub可能會(huì)比較慢,因此國(guó)內(nèi)的一些云服務(wù)商提供了針對(duì)Docker Hub的鏡像服務(wù)(Registry Mirror),這些鏡像服務(wù)被稱為加速器,可以直接從國(guó)內(nèi)的地址下載Docker Hub的鏡像,比直接從Docker Hub下載速度會(huì)提高很多。
?
3.2.私有Docker Registry
? ? ? ? 用戶可以在本地搭建私有 Docker Registry,也可以使用官方提供的 Docker Registry 鏡像作為私有 Registry 服務(wù)。
開源的 Docker Registry 鏡像只提供了 Docker Registry API 的服務(wù)端實(shí)現(xiàn),不包含圖形界面、鏡像維護(hù)、用戶管理和訪問(wèn)控制等高級(jí)功能。在商業(yè)化版本 Docker Trusted Registry 中提供了這些高級(jí)功能。除了官方的 Docker Registry 和第三方軟件實(shí)現(xiàn)的 Docker Registry API,還有一些第三
三.docker的安裝與部署
1.使用yum源安裝
# step 1: 安裝必要的一些系統(tǒng)工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加軟件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安裝Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 開啟Docker服務(wù)
sudo systemctl start docker
2.二進(jìn)制安裝
到 https://download.docker.com/linux/static/stable/x86_64/ 頁(yè)面下載自己需要版本的發(fā)布包。
[root@localhost data]# tar -xvf docker-18.03.1-ce.tgz
?配置啟動(dòng)腳本
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.targe
這個(gè)安裝不好的是沒(méi)有命令補(bǔ)齊Tab鍵,補(bǔ)全命令那個(gè)網(wǎng)站找不到了
?3.配置鏡像加速
? 國(guó)內(nèi)從Docker Hub拉取鏡像有時(shí)會(huì)遇到困難,此時(shí)可以配置鏡像加速器。
(1)從2017年6月9日起,Docker 官方提供了在中國(guó)的加速器,以解決墻的問(wèn)題。不用注冊(cè),直接使用 加速器地址:https://registry.docker-cn.com 即可。?
(2)中國(guó)科技大學(xué)的鏡像加速器:中科大的加速器不用注冊(cè),直接使用地址 https://docker.mirrors.us tc.edu.cn/ 配置加速器即可。進(jìn)一步的信息可以訪問(wèn):http://mirrors.ustc.edu.cn/help/dockerhub.ht ml?highlight=docker
(3)阿里云加速器:注冊(cè)阿里云開發(fā)賬戶(免費(fèi)的)后,訪問(wèn)這個(gè)鏈接就可以看到加速器地址: https://c r.console.aliyun.com/#/accelerator
(4)DaoCloud 加速器:注冊(cè) DaoCloud 賬戶(支持微信登錄),然后訪問(wèn): https://www.daocloud.io/ mirror#accelerator-doc
?
[root@localhost ~]# vim /etc/docker/daemon.json
?四.使用
1.下載系統(tǒng)鏡像(Ubuntu、 centos)
搜索官方鏡像
?拉取鏡像命令:docker pull
docker pull ubuntu:20.04
docker pull centos:7
2.基于下載的鏡像創(chuàng)建兩個(gè)容器 (容器名一個(gè)為自己名字全拼,一個(gè)為首名字字母)
docker run -d --name wangcong ubuntu:20.04
docker run -it --name WC centos:7 /bin/bash
3.容器的啟動(dòng)、 停止及重啟操作
啟動(dòng)容器:docker start? 容器名
停止容器:docker stop/kill 容器名
重啟容器: docker restart 容器名
?
4.怎么查看正在運(yùn)行的容器和所有容器?
?docker ps
要查看所有已經(jīng)創(chuàng)建的容器,可以使用以下命令:
docker ps -a
?另外,還可以使用 `docker container ls` 命令來(lái)列出所有容器,無(wú)論它們是否正在運(yùn)行。該命令會(huì)列出所有容器的 ID、名稱、鏡像名稱、創(chuàng)建時(shí)間、狀態(tài)等信息。
5.怎么退出容器: 兩種方法分別實(shí)現(xiàn)?
方法一:使用 `exit` 命令或`ctrl+D`這種辦法會(huì)退出·容器并停止容器
方法二:?使用 `Ctrl+Q+P` 命令文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-667530.html
這個(gè)命令會(huì)退出容器但是不會(huì)停止容器,也就是容器還會(huì)在后臺(tái)繼續(xù)運(yùn)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-667530.html
6.怎么連接到運(yùn)行的容器?
docker exec -it 容器名 /bin/bash
7.查看容器或鏡像的內(nèi)部信息?
docker inspect 容器名

8.如何查看所有鏡像?
docker images
到了這里,關(guān)于docker的安裝以及基本操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!