日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker安装与镜像的使用

發(fā)布時間:2024/3/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker安装与镜像的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大數(shù)據(jù)技術(shù)AI

Flink/Spark/Hadoop/數(shù)倉,數(shù)據(jù)分析、面試,源碼解讀等干貨學(xué)習(xí)資料

102篇原創(chuàng)內(nèi)容

公眾號

1、docker簡介

=============

1.1 什么是docker

docker官網(wǎng)地址:https://docs.docker.com/

Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國期間發(fā)起的一個公司內(nèi)部項目,它是基于 dotCloud 公司多年云服務(wù)技術(shù)的一次革新,并于 2013 年 3 月以 Apache 2.0 授權(quán)協(xié)議開源,主要項目代碼在 GitHub 上進行維護。Docker 項目后來還加入了 Linux 基金會,并成立推動開放容器聯(lián)盟(OCI)。

Docker 使用 Google 公司推出的 Go 語言進行開發(fā)實現(xiàn),基于 Linux 內(nèi)核的 cgroup,namespace,以及 OverlayFS 類的 Union FS 等技術(shù),對進程進行封裝隔離,屬于操作系統(tǒng)層面的虛擬化技術(shù)。由于隔離的進程獨立于宿主和其它的隔離的進程,因此也稱其為容器。最初實現(xiàn)是基于 LXC,從 0.7 版本以后開始去除 LXC,轉(zhuǎn)而使用自行開發(fā)的 libcontainer,從 1.11 開始,則進一步演進為使用 runC 和 containerd。

Docker 在容器的基礎(chǔ)上,進行了進一步的封裝,從文件系統(tǒng)、網(wǎng)絡(luò)互聯(lián)到進程隔離等等,極大的簡化了容器的創(chuàng)建和維護。使得 Docker 技術(shù)比虛擬機技術(shù)更為輕便、快捷。

1.2 為什么要用docker

1.2.1 docker的優(yōu)勢

  • 更高效的利用系統(tǒng)資源

由于容器不需要進行硬件虛擬以及運行完整操作系統(tǒng)等額外開銷,Docker 對系統(tǒng)資源的利用率更高。無論是應(yīng)用執(zhí)行速度、內(nèi)存損耗或者文件存儲速度,都要比傳統(tǒng)虛擬機技術(shù)更高效。因此,相比虛擬機技術(shù),一個相同配置的主機,往往可以運行更多數(shù)量的應(yīng)用。

  • 更快速的啟動時間

傳統(tǒng)的虛擬機技術(shù)啟動應(yīng)用服務(wù)往往需要數(shù)分鐘,而 Docker 容器應(yīng)用,由于直接運行于宿主內(nèi)核,無需啟動完整的操作系統(tǒng),因此可以做到秒級、甚至毫秒級的啟動時間。大大的節(jié)約了開發(fā)、測試、部署的時間。

  • 一致的運行環(huán)境

開發(fā)過程中一個常見的問題是環(huán)境一致性問題。由于開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境不一致,導(dǎo)致有些 bug 并未在開發(fā)過程中被發(fā)現(xiàn)。而 Docker 的鏡像提供了除內(nèi)核外完整的運行時環(huán)境,確保了應(yīng)用運行環(huán)境一致性,從而不會再出現(xiàn) 「這段代碼在我機器上沒問題啊」 這類問題。

  • 持續(xù)交付和部署

對開發(fā)和運維(DevOps)人員來說,最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運行。

使用 Docker 可以通過定制應(yīng)用鏡像來實現(xiàn)持續(xù)集成、持續(xù)交付、部署。開發(fā)人員可以通過 Dockerfile 來進行鏡像構(gòu)建,并結(jié)合持續(xù)集成(Continuous Integration) 系統(tǒng)進行集成測試,而運維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像,甚至結(jié)合 持續(xù)部署(Continuous Delivery/Deployment) 系統(tǒng)進行自動部署。

而且使用 Dockerfile 使鏡像構(gòu)建透明化,不僅僅開發(fā)團隊可以理解應(yīng)用運行環(huán)境,也方便運維團隊理解應(yīng)用運行所需條件,幫助更好的生產(chǎn)環(huán)境中部署該鏡像。

  • 更輕松的遷移

由于 Docker 確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易。Docker 可以在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云,甚至是筆記本,其運行結(jié)果是一致的。因此用戶可以很輕易的將在一個平臺上運行的應(yīng)用,遷移到另一個平臺上,而不用擔(dān)心運行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運行的情況。

  • 更輕松的維護和擴展

Docker 使用的分層存儲以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易,也使得應(yīng)用的維護更新更加簡單,基于基礎(chǔ)鏡像進一步擴展鏡像也變得非常簡單。此外,Docker 團隊同各個開源項目團隊一起維護了一大批高質(zhì)量的 官方鏡像,既可以直接在生產(chǎn)環(huán)境使用,又可以作為基礎(chǔ)進一步定制,大大的降低了應(yīng)用服務(wù)的鏡像制作成本。

1.2.2 docker與傳統(tǒng)虛擬機的比較

特性docker虛擬機
啟動秒級分鐘級
硬盤使用一般為 MB一般為 GB
性能接近原生弱于
系統(tǒng)支持量單機支持上千個容器一般幾十個
隔離性安全隔離完全隔離

2、docker的核心概念

Docker 包括三個基本概念

  • 鏡像(Image)

  • 容器(Container)

  • 倉庫(Repository)

理解了這三個概念,就理解了 Docker 的整個生命周期。

2.0 Docker架構(gòu)

Docker使用客戶端 - 服務(wù)器架構(gòu)。Docker客戶端與Docker守護程序交談,該守護程序是大量的建筑,運行和分配您的Docker容器。Docker客戶端和守護程序可以在同一系統(tǒng)上運行,或者您可以將Docker客戶端連接到遠程Docker守護程序。Docker客戶端和守護進程使用REST API進行通信,通過UNIX套接字或網(wǎng)絡(luò)接口。另一個Docker客戶端是Docker撰寫,可允許您使用由一組容器組成的應(yīng)用程序。

2.1 鏡像(Image)

Docker鏡像類似于一個虛擬機鏡像(xxx.iso), 可以將它理解為一個只讀的模板!

例如, 一個鏡像可以包含一個基本的操作系統(tǒng)環(huán)境, 里面僅安裝了 Apache應(yīng)用程序(或用戶需要的其他軟件). 可以把它稱為Apache鏡像.

鏡像是創(chuàng)建Docker容器的基礎(chǔ).

通過版本管理和增量的文件系統(tǒng), Docker提供了一套十分簡單的機制來創(chuàng)建和更新現(xiàn)有的鏡像, 用戶甚至可以從網(wǎng)上下載一個已經(jīng)做好的應(yīng)用鏡像, 并直接使用它.

2.2 容器(Container)

Docker 容器類似于一個輕量級的沙箱, Docker 利用容器來運行和隔離應(yīng)用。

容器是從鏡像創(chuàng)建的應(yīng)用運行實例。它可以啟動、開始、停止、刪除,而這些容器都是彼此相互隔離、互不可見的。

可以把容器看作一個簡易版的 Linux 系統(tǒng)環(huán)境(包括 root 用戶權(quán)限、進程空間、用戶空間和網(wǎng)絡(luò)空間等)以及運行在其中的應(yīng)用程序打包而成的盒子。

注意:

  • 鏡像自身是只讀的。

  • 容器從鏡像啟動的時候,會在鏡像的最上層創(chuàng)建一個可寫層。

2.3 倉庫(Repository)

Docker 倉庫類似于代碼倉庫,是 Docker 集中存放鏡像文件的場所

根據(jù)所存儲的鏡像公開分享與否, Docker 倉庫可以分為公開倉庫(Public)和私有倉庫(Private)兩種形式。

目前,最大的公開倉庫是官方提供的 Docker Hub ,其中存放著數(shù)量龐大的鏡像供用戶下載。國內(nèi)不少云服務(wù)提供商(如騰訊云 、 阿里云等)也提供了倉庫的本地源,可以提供穩(wěn)定的國內(nèi)訪問 。

當(dāng)然,用戶如果不希望公開分享自己的鏡像文件, Docker 也支持用戶在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個只能自己訪問的私有倉庫。

當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用 push 命令將它上傳到指定的公有或者私有倉庫。這樣用戶下次在另外一臺機器上使用該鏡像時,只需要將其從倉庫上 pull 下來就可以了。

3、Centos安裝Docker引擎

Docker 目前支持 CentOS 7 及以后的版本, 內(nèi)核版本必須是3.10.

查看操作系統(tǒng)版本: cat /etc/redhat-release

[root@hadoop01 root]$ cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)

查看內(nèi)核版本: uname -r

[root@hadoop01 root]$ uname -r3.10.0-862.el7.x86_64

3.1 卸載舊版本

官網(wǎng)說明:https://docs.docker.com/engine/install/centos/

舊版本的 Docker 被叫做 docker 或 docker-engine,如果安裝了舊版本的 Docker ,需要卸載掉它。

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine [root@hadoop01 root]$ sudo yum remove docker \> docker-client \> docker-client-latest \> docker-common \> docker-latest \> docker-latest-logrotate \> docker-logrotate \> docker-engine[sudo] duo 的密碼:已加載插件:fastestmirror, langpacks參數(shù) docker 沒有匹配參數(shù) docker-client 沒有匹配參數(shù) docker-client-latest 沒有匹配參數(shù) docker-common 沒有匹配參數(shù) docker-latest 沒有匹配參數(shù) docker-latest-logrotate 沒有匹配參數(shù) docker-logrotate 沒有匹配參數(shù) docker-engine 沒有匹配不刪除任何軟件包

3.2 安裝Docker方法一

官網(wǎng)安裝地址:https://docs.docker.com/engine/install/centos/

3.2.1 安裝依賴的軟件包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3.2.2 添加Docker文檔版本的yum源

官方的yum源安裝docker比較慢, 我們配置國內(nèi)比較快的yum源(阿里云)

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.2.3 安裝最新版本的docker引擎(社區(qū)版)

sudo yum -y install docker-ce docker-ce-cli containerd.io

3.3 安裝Docker方法二:使用腳本自動安裝

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

注意:自動安裝腳本會自動檢測系統(tǒng)信息并進行相應(yīng)配置

[root@hadoop01 root]$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun# Executing docker install script, commit: 93d2499759296ac1f9c510605fef85052a2c32be+ sudo -E sh -c 'yum install -y -q yum-utils'+ sudo -E sh -c 'yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docke r-ce.repo'已加載插件:fastestmirror, langpacksadding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repograbbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/doc ker-ce.reporepo saved to /etc/yum.repos.d/docker-ce.repo+ '[' stable '!=' stable ']'+ sudo -E sh -c 'yum makecache'已加載插件:fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: mirrors.ustc.edu.cn* centos-sclo-rh: mirrors.ustc.edu.cn* centos-sclo-sclo: mirrors.ustc.edu.cn* extras: mirrors.ustc.edu.cn* updates: mirrors.ustc.edu.cnbase | 3.6 kB 00:00:00centos-sclo-rh | 3.0 kB 00:00:00centos-sclo-sclo | 3.0 kB 00:00:00docker-ce-stable | 3.5 kB 00:00:00extras | 2.9 kB 00:00:00updates | 2.9 kB 00:00:00(1/12): docker-ce-stable/7/x86_64/filelists_db | 29 kB 00:00:00(2/12): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:00(3/12): centos-sclo-sclo/x86_64/filelists_db | 935 kB 00:00:00(4/12): centos-sclo-sclo/x86_64/other_db | 185 kB 00:00:01(5/12): extras/7/x86_64/filelists_db | 259 kB 00:00:00(6/12): docker-ce-stable/7/x86_64/primary_db | 70 kB 00:00:01(7/12): docker-ce-stable/7/x86_64/other_db | 122 kB 00:00:00(8/12): extras/7/x86_64/other_db | 145 kB 00:00:00(9/12): updates/7/x86_64/filelists_db | 7.0 MB 00:00:09(10/12): centos-sclo-rh/x86_64/filelists_db | 12 MB 00:00:13(11/12): updates/7/x86_64/other_db | 904 kB 00:00:13(12/12): centos-sclo-rh/x86_64/other_db | 1.5 MB 00:00:15元數(shù)據(jù)緩存已建立+ '[' -n '' ']'+ sudo -E sh -c 'yum install -y -q docker-ce'warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-20.10.12-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEYdocker-ce-20.10.12-3.el7.x86_64.rpm 的公鑰尚未安裝導(dǎo)入 GPG key 0x621E9F35:用戶ID : "Docker Release (CE rpm) <docker@docker.com>"指紋 : 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35來自 : https://mirrors.aliyun.com/docker-ce/linux/centos/gpgsetsebool: SELinux is disabled.+ version_gte 20.10+ '[' -z '' ']'+ return 0+ sudo -E sh -c 'yum install -y -q docker-ce-rootless-extras'軟件包 docker-ce-rootless-extras-20.10.12-3.el7.x86_64 已安裝并且是最新版本================================================================================To run Docker as a non-privileged user, consider setting up theDocker daemon in rootless mode for your user:dockerd-rootless-setuptool.sh installVisit https://docs.docker.com/go/rootless/ to learn about rootless mode.To run the Docker daemon as a fully privileged service, but granting non-rootusers access, refer to https://docs.docker.com/go/daemon-access/WARNING: Access to the remote API on a privileged Docker daemon is equivalentto root access on the host. Refer to the 'Docker daemon attack surface'documentation for details: https://docs.docker.com/go/attack-surface/================================================================================

3.4 啟動docker服務(wù)

sudo systemctl start docker [duo@hadoop01 hive]$ sudo systemctl start docker[duo@hadoop01 hive]$ ps -ef | grep dockerroot 28682 1 5 15:34 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/conta inerd.sockduo 28821 5782 0 15:35 pts/1 00:00:00 grep --color=auto docker

3.5 驗證Docker是否可用

sudo docker run hello-world

3.6 把普通用戶添加到docker 組

每次使用docker的時候都需要使用root用戶, 比較麻煩. 可用把普通用戶添加到docker組, 避免每次都添加sudo.

退出當(dāng)前shell, 重新進入shell, 使剛才的配置生效

sudo usermod -aG docker duo

4、鏡像基本操作

鏡像是 Docker 三大核心概念中最重要的,自 Docker 誕生之日起鏡像就是相關(guān)社區(qū)最為熱門的關(guān)鍵詞。Docker 運行容器前需要本地存在對應(yīng)的鏡像,如果鏡像不存在Docker 會嘗試先從默認鏡像倉庫下載,用戶也可以通過配置, 使用自定義的鏡像倉庫。

4.1 列出本機鏡像

docker images [duo@hadoop01 ~]$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest feb5d9fea6a5 3 months ago 13.3kB

說明:

  • **REPOSITORY:**來源倉庫

  • **TAG:**鏡像的標簽信息, 表示鏡像的版本. 只是標記, 并不能表示鏡像內(nèi)容

  • **IMAGE ID:**鏡像id, 唯一表示一個鏡像. 如果兩個鏡像的 ID 相同, 說明它們實際上指向了同一 個鏡像, 只是具有不同標簽名稱而已;

  • **CREATED:**鏡像的最后更新時間.

  • **SIZE:**鏡像大小

4.2 獲取一個新鏡像

當(dāng)我們在本地主機上使用一個不存在的鏡像時 Docker 就會自動下載這個鏡像。如果我們想預(yù)先下載這個鏡像,我們可以使用 docker pull 命令來下載它。

docker pull hello-world

下載完成后, 可以使用這個鏡像來運行容器

4.3 配置國內(nèi)鏡像源地址

下載鏡像的時候, 默認是從官方地址下載, 服務(wù)器在國外, 速度比較慢, 可以換成國內(nèi)鏡像.

4.3.1 國內(nèi)常用加速地址:

網(wǎng)易:http://hub-mirror.c.163.com

中國科技大學(xué):https://docker.mirrors.ustc.edu.cn

阿里云容器服務(wù):https://cr.console.aliyun.com/

4.3.2 配置方法

sudo vim /etc/docker/daemon.json{"registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://123456.mirror.aliyuncs.com"]}

4.3.3 說明:

  • 關(guān)于阿里云地址, 參考:
  • https://help.aliyun.com/document_detail/60750.html?spm=a2c4g.11186623.6.550.469742c75wmmC8

  • 重啟 docker: sudo systemctl restart docker

  • 查看是否配置成功: docker info

  • [duo@hadoop01 ~]$ sudo systemctl restart docker [duo@hadoop01 ~]$ docker infoClient:Context: defaultDebug Mode: falsePlugins:app: Docker App (Docker Inc., v0.9.1-beta3)buildx: Docker Buildx (Docker Inc., v0.7.1-docker)scan: Docker Scan (Docker Inc., v0.12.0)Server:Containers: 0Running: 0Paused: 0Stopped: 0Images: 1Server Version: 20.10.12Storage Driver: overlay2Backing Filesystem: extfsSupports d_type: trueNative Overlay Diff: trueuserxattr: falseLogging Driver: json-fileCgroup Driver: cgroupfsCgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslogSwarm: inactiveRuntimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linuxDefault Runtime: runcInit Binary: docker-initcontainerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5drunc version: v1.0.2-0-g52b36a2init version: de40ad0Security Options:seccompProfile: defaultKernel Version: 3.10.0-862.el7.x86_64Operating System: CentOS Linux 7 (Core)OSType: linuxArchitecture: x86_64CPUs: 8Total Memory: 8.951GiBName: hadoop01ID: 7K5E:P6N4:DSUM:5NP6:CJ3X:YQBH:NFP4:DMXO:YCZX:7VCR:ZYGN:335NDocker Root Dir: /var/lib/dockerDebug Mode: falseRegistry: https://index.docker.io/v1/Labels:Experimental: falseInsecure Registries:127.0.0.0/8Registry Mirrors:http://hub-mirror.c.163.com/https://docker.mirrors.ustc.edu.cn/https://813o9nus.mirror.aliyuncs.com/Live Restore Enabled: false

    4.4 搜索鏡像

    docker search hello-world

    4.5 刪除鏡像

    • 使用tag刪除鏡像
    docker rmi hello-world:latest

    注意:

  • 如果刪除的時候報錯: 有容器使用了該鏡像, 則需要先刪除使用過該鏡像的容器, 才能刪除該鏡像.

  • 刪除容器, 再刪鏡像

  • [root@hadoop01 ~]# docker ps -afb528db4c681[root@hadoop01 ~]# docker ps -aq | xargs docker rm -ffb528db4c681
    • 使用id刪除鏡像
    [duo@hadoop01 ~]$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest feb5d9fea6a5 3 months ago 13.3kB[duo@hadoop01 ~]$ docker rmi feb5d9fea6a5Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be forced) - image is being used by stopped container 0bf028f38463[duo@hadoop01 ~]$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES0bf028f38463 hello-world "/hello" About a minute ago Exited (0) About a minute ago dazzling_wescoff[duo@hadoop01 ~]$ docker ps -aq0bf028f38463[duo@hadoop01 ~]$ docker rm -f 0bf028f384630bf028f38463[duo@hadoop01 ~]$ docker ps -aq[duo@hadoop01 ~]$ docker rmi feb5d9fea6a5Untagged: hello-world:latestUntagged: hello-world@sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60fDeleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359
    • 清理鏡像

    使用 Docker 一段時間后,系統(tǒng)中可能會遺留一些臨時的鏡像文件,以及一些沒有被使用的鏡像,可以通過 docker image prune -f 命令來進行清理。

    總結(jié)

    以上是生活随笔為你收集整理的Docker安装与镜像的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。