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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Docker小白到实战之开篇概述

發(fā)布時(shí)間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker小白到实战之开篇概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

“不對(duì)啊,在我這運(yùn)行很正常啊”,這句話小伙伴們?cè)谇皫啄陸?yīng)該聽得很多;每次一到安裝、部署時(shí)總有一堆問題,畢竟操作系統(tǒng)版本、軟件環(huán)境、硬件資源、網(wǎng)絡(luò)等因素在作怪,此時(shí)難免會(huì)導(dǎo)致開發(fā)小伙伴和運(yùn)維哥們互相甩鍋,其實(shí)很多時(shí)候與要部署的系統(tǒng)沒有太大關(guān)系。如果能減少差異化帶來的不和諧,同時(shí)還能提高工作效率,肯定是最好的解決方案;Docker的出現(xiàn)讓此類問題迎刃而解,即把應(yīng)用程序、配置依賴等打包形成一個(gè)可交付的運(yùn)行環(huán)境,直接啟動(dòng)運(yùn)行即可,當(dāng)然不限于此,接下來就一起來學(xué)習(xí)和探究吧。

正文

1. 概述

1.1 Docker簡(jiǎn)介

Docker 是一個(gè)開源的應(yīng)用容器引擎,是用Go語言開發(fā)的。用于開發(fā)、交付和運(yùn)行應(yīng)用程序的開放平臺(tái),能夠?qū)?yīng)用程序與基礎(chǔ)設(shè)施分開,從而可以快速交付軟件。

看看Docker 的Logo圖

image-20210814101505393,Docker就好比是下面的小鯨魚,上面裝滿的每個(gè)集裝箱(方塊)可以理解為容器,不管集裝箱里面裝的什么,統(tǒng)一按集裝箱的形式打包存放、運(yùn)輸即可,集裝箱之間互不影響;即Docker不在乎容器里的內(nèi)容是什么,統(tǒng)一基于容器這種形式進(jìn)行標(biāo)準(zhǔn)化管理,容器之間相互隔離,所以Docker上運(yùn)行的多個(gè)容器是相互不影響的。

Docker 從 17.03 版本之后分為 CE(Community Edition: 社區(qū)版) 和 EE(Enterprise Edition: 企業(yè)版),通常社區(qū)版足夠用了,功能強(qiáng)大,還免費(fèi)。

1.2 Docker架構(gòu)
Docker Architecture Diagram

Docker是客戶端/服務(wù)器模式架構(gòu)(C/S),Client(客戶端)和Docker daemon(守護(hù)進(jìn)程)通信, 后者接收到客戶端指令并執(zhí)行。簡(jiǎn)述上圖的三個(gè)流程:

  • 客戶端(Client) 發(fā)送docker build指令, 服務(wù)端(Docker daemon) 收到指令之后就執(zhí)行,將對(duì)應(yīng)文件打包生成為鏡像(Images)

  • 客戶端(Client) 發(fā)送docker pull指令,服務(wù)端(Docker daemon) 收到指令之后就執(zhí)行,從遠(yuǎn)程倉儲(chǔ)中(Registry) 尋找鏡像(Images) ,并下載到Docker主機(jī)上(DOCKER_HOST) ,如果找不到就報(bào)錯(cuò);

  • 客戶端(Client) 發(fā)送docker run指令,服務(wù)端(Docker daemon) 收到指令之后就執(zhí)行,先從本地查找鏡像(Images) ,如果本地存在,直接通過鏡像啟動(dòng)容器(Containers) 實(shí)例;如果本地沒有鏡像(Images),就會(huì)從遠(yuǎn)程倉儲(chǔ)中(Registry)下載,然后再根據(jù)鏡像啟動(dòng)容器(Containers) 實(shí)例,如果都沒找到,那就報(bào)錯(cuò)。

上面只是用三關(guān)鍵指令大概描述了從客戶端到服務(wù)端的執(zhí)行流程,其實(shí)還有很多指令,后續(xù)會(huì)專門整理文章分享。

上圖術(shù)語解釋及作用:

  • Docker daemon(守護(hù)進(jìn)程) :負(fù)責(zé)監(jiān)聽客戶端發(fā)過來的指令請(qǐng)求,并管理Docker的各種對(duì)象,如鏡像(Images)、容器(Containers)、網(wǎng)絡(luò)等。

  • Client(客戶端) :用戶和Docker主機(jī)交互的主要方式,就是用來發(fā)指令請(qǐng)求的。

  • 遠(yuǎn)程倉儲(chǔ)(Registry) :用于各種鏡像的存儲(chǔ),Docker Hub是最大的鏡像存儲(chǔ)庫,基本上平時(shí)能用到的鏡像都可以找到;為了提升拉取速度,可以指定國內(nèi)的一些倉儲(chǔ)。

  • 鏡像(Images) :是一個(gè)啟動(dòng)容器(Containers) 的只讀模板;比較容易理解的比喻:鏡像就是編程語言中的類(Class),容器就是通過類(Class) new出來的實(shí)例。

  • 容器(Containers) :就是鏡像(Images) 可運(yùn)行的實(shí)例。

1.3 Docker帶來的好處
  • 開發(fā)更加敏捷: 讓開發(fā)人員可以自由定義環(huán)境,創(chuàng)建和部署的應(yīng)用程序更快、更容易,運(yùn)維人員快速應(yīng)對(duì)變化也更加靈活性。

  • 高可移植性和擴(kuò)展性: Docker容器可以運(yùn)行在各種設(shè)備環(huán)境中,如開發(fā)電腦、虛擬機(jī)、服務(wù)器上等;根據(jù)業(yè)務(wù)需求,可實(shí)時(shí)擴(kuò)展或拆除應(yīng)用程序及相關(guān)服務(wù);

  • 充分利用硬件資源:Docker輕量級(jí)、啟動(dòng)快,能共用公共服務(wù),不像傳統(tǒng)的虛擬機(jī)那樣,需要單獨(dú)虛擬出整個(gè)系統(tǒng),占用資源多,速度還不夠快。Docker容器之間相互隔離,互不沖突,所以同時(shí)可運(yùn)行很多個(gè)容器,充分利用資源。

理論先說那么多,主要是實(shí)操應(yīng)用,用明白了,理論自然就清晰了。

2. 安裝

這里安裝的主機(jī)環(huán)境是我之前的買的云服務(wù)器,系統(tǒng)為CentOS7,其他系統(tǒng)版本安裝會(huì)有差別,具體細(xì)節(jié)小伙伴可以參考官網(wǎng)(https://docs.docker.com/get-docker/),里面步驟都很詳細(xì)。

1、移除移動(dòng)舊版本

???sudo?yum?remove?docker?\docker-client?\docker-client-latest?\docker-common?\docker-latest?\docker-latest-logrotate?\docker-logrotate?\docker-engine

2、安裝需要的依賴包

???sudo?yum?install?-y?yum-utils

3、設(shè)置鏡像倉庫

???sudo?yum-config-manager?\--add-repo?\https://download.docker.com/linux/centos/docker-ce.repo??

4、更新Yum軟件包索引

???sudo?yum?makecache?fast?#?提高安裝速度

5、開始安裝Docker

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

6、啟動(dòng)Docker

???sudo?systemctl?start?docker

7、測(cè)試Docker

???sudo?docker?run?hello-world?#?運(yùn)行Hello-world 安裝成功

以上步驟已經(jīng)完成Docker的安裝,但由于拉取鏡像時(shí)是從國外下載,比較慢,所以通常我們會(huì)配置鏡像加速器,國內(nèi)騰訊云、阿里云等都提供加速站點(diǎn),這里還是用阿里云演示,因?yàn)橛匈~號(hào)。

配置鏡像加速器

3. 初體驗(yàn)

安裝完成之后,這里不急著往下說,先來體驗(yàn)一下;很方便的就將自己的項(xiàng)目打包然后運(yùn)行,步驟如下:

  • 準(zhǔn)備一個(gè)項(xiàng)目

    這里就直接創(chuàng)建一個(gè)默認(rèn)的API項(xiàng)目(基于.NetCore3.1)即可,什么都不做。

  • 編寫Dockerfile

    在項(xiàng)目根目錄下增加一個(gè)Dockerfile文件,里面內(nèi)容如下:

    具體內(nèi)容如下

    FROM?mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim WORKDIR?/app COPY?.?. EXPOSE?80 ENTRYPOINT?["dotnet",?"DockerDemo.dll"]

    設(shè)置Dockerfile的文件屬性為始終復(fù)制,如下:

    以文件系統(tǒng)的形式發(fā)布項(xiàng)目,指定本地目錄,如下:

  • 將發(fā)布之后的文件拷貝到裝有Docker的主機(jī)上

    將項(xiàng)目進(jìn)行發(fā)布,把發(fā)布之后的文件拷貝到我的阿里云服務(wù)器上,用到的工具是FinalShell(一個(gè)工具完成連接服務(wù)器和上傳文件,很好用),如下:

  • 打包為鏡像

    進(jìn)入發(fā)布文件目錄,執(zhí)行docker build命令,將發(fā)布文件打包為一個(gè)鏡像,如下:

    上圖中的mydockerdemo 是鏡像名,可以自定義;通過docker images查看鏡像是否生成,如下:

  • 根據(jù)鏡像啟動(dòng)容器(里面包含我們的項(xiàng)目)

    鏡像生成之后,就可以通過docker run指令根據(jù)鏡像啟動(dòng)容器了,即啟動(dòng)我們的項(xiàng)目

    docker?run?-d?--name?mydockerdemo?-p?9999:80?mydockerdemo

    -d:后臺(tái)模式運(yùn)行;

    --name:給運(yùn)行中的容器指定一個(gè)名字;

    -p:指定端口映射, 主機(jī)的端口9999映射到容器的端80,因?yàn)樵谌萜骼锩嫖覀兊捻?xiàng)目是以80 端口啟動(dòng)的;

    最后一個(gè)參數(shù)是上一步生成的鏡像名稱, 即根據(jù)此鏡像啟動(dòng)一個(gè)容器實(shí)例。

  • 測(cè)試訪問看看,只要配置了云服務(wù)器的安全組和防火墻放開9999端口,那么外網(wǎng)就可以訪問了,如下:

可能有小伙伴說,也挺麻煩的;其實(shí)編寫Dockerfile,打包鏡像等操作都是一次性的,只要生成了鏡像,后續(xù)其他環(huán)境直接根據(jù)鏡像啟動(dòng)即可,不用再單獨(dú)安裝.NetCore運(yùn)行時(shí)等基礎(chǔ)設(shè)施了,打包好的鏡像里包含了完整的運(yùn)行環(huán)境。

總結(jié)

這里先初步了解Docker,并進(jìn)行安裝和體驗(yàn),接下來的文章會(huì)把常用命令、Dockerfile、容器數(shù)據(jù)卷掛載、DockerCompose及DockerSwarm等相關(guān)知識(shí)依次說到。Docker已經(jīng)成為必備技能,再不學(xué)習(xí)就Out了,關(guān)注“Code綜藝圈”,和我一起學(xué)習(xí)吧;

圖片

\

總結(jié)

以上是生活随笔為你收集整理的Docker小白到实战之开篇概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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