日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
用了八年的方式-用Docker瞬間搭建本地開(kāi)發(fā)環(huán)境

用了八年的方式-用 docker 瞬間搭建本地開(kāi)發(fā)環(huán)境

作者:風(fēng)箏 2023-07-27 08:24:28

云計(jì)算

云原生 第一次可能比較慢,熟悉了之后就非??炝耍饶阍诒镜刂苯影惭b配置要快的多,而且一些軟件安裝配置起來(lái)非常繁瑣,會(huì)浪費(fèi)很多不必要的時(shí)間。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了白山免費(fèi)建站歡迎大家使用!

有些時(shí)候我們需要在本地搭開(kāi)發(fā)環(huán)境,比如平時(shí)學(xué)習(xí)新技術(shù)的時(shí)候?;蛘哂袝r(shí)候公司的項(xiàng)目需要在本地建一套類似的,方便調(diào)試修改。

開(kāi)發(fā)環(huán)境可能包括 MySQL、Redis、Nginx、MQ 、Elasticsearch等等,今天用的是 MySQL,明天又用PostgreSQL了,如果用啥都在本機(jī)裝一下的話,倒也不是不可以,但是就非常麻煩了,而且有時(shí)候安裝會(huì)遇到各種各樣的問(wèn)題,很是不爽。

有什么快速有優(yōu)雅的方式?jīng)]有?

就是我們今天要說(shuō)的 Docker 了,Docker 到現(xiàn)在為止,早就不是什么新技術(shù)了,甚至可以說(shuō)是很普遍很大眾的技術(shù)方案了。

我記得我最早開(kāi)始用 Docker 已經(jīng)是 2015年了,到現(xiàn)在已經(jīng)快8年了。只能感嘆,時(shí)間過(guò)得是真快呀!

圖片

那段時(shí)間也把 Docker 安利給了不少同學(xué)、同事,我只是這樣告訴他們:“這玩意兒在本地搭一套開(kāi)發(fā)環(huán)境真的很方便”,至于它后來(lái)發(fā)展成現(xiàn)在的規(guī)模,我也是沒(méi)想到的。

如果你是個(gè)開(kāi)發(fā)老手兒,相信你早就用起來(lái)了。而如果你是個(gè)新手,那也要盡快用起來(lái)了,不僅能節(jié)省搭建環(huán)境的時(shí)間,還能學(xué)習(xí)學(xué)習(xí),畢竟現(xiàn)在容器化部署方式很普遍了,多了解了解還是非常有必要的。

Docker 原理和基礎(chǔ)命令

基本原理

用任何一種技術(shù)首先都要先了解它的技術(shù)原理,做到心中有數(shù)。

Docker 使用 Google 公司推出的 Go 語(yǔ)言進(jìn)行開(kāi)發(fā)實(shí)現(xiàn),基于 Linux 內(nèi)核的cgroup,namespace,以及 OverlayFS類的 Union FS 等技術(shù),對(duì)進(jìn)程進(jìn)行封裝隔離,屬于操作系統(tǒng)層面的虛擬化技術(shù)。由于隔離的進(jìn)程獨(dú)立于宿主和其它的隔離的進(jìn)程,因此也稱其為容器。

Docker 經(jīng)常拿來(lái)和虛擬機(jī)來(lái)比較,因?yàn)樗鼈儍蓚€(gè)的用處和用法都很相似,就是在一臺(tái)實(shí)體機(jī)上啟動(dòng)多個(gè)虛擬系統(tǒng)(暫且這么說(shuō))。如果基于使用的層面來(lái)講,你完全可以把 Docker 當(dāng)做虛擬機(jī)來(lái)用,然而實(shí)際的底層技術(shù)原理是完全不一樣的。

假設(shè)你現(xiàn)在變身了,站在了 Docker 和 虛擬機(jī)的內(nèi)部,從里面向外看,發(fā)現(xiàn)虛擬機(jī)有自己的 CPU(虛擬CPU)、內(nèi)存、硬盤(pán),再往外才是宿主機(jī)的 CPU、硬盤(pán)、內(nèi)存等。而如果是在Docker內(nèi)部向外看,發(fā)現(xiàn)你無(wú)論站在當(dāng)前實(shí)體機(jī)的哪個(gè)容器里,看到的都是宿主機(jī)的 CPU、硬盤(pán)、內(nèi)存等。說(shuō)明 Dokcer 容器是直接拿宿主機(jī)的資源當(dāng)自己的用,所以每個(gè)容器的硬件配置都是一樣的,而虛擬機(jī)是完全虛擬出來(lái)一套。

基礎(chǔ)命令

Dokcer 的命令有一大堆,但是常用的就那幾個(gè)。

鏡像相關(guān)

獲取鏡像

docker pull 鏡像名稱

查看鏡像列表

docker image ls

容器相關(guān)

查看容器

docker ps -a

新建并啟動(dòng)容器

sudo docker run -t -i ubuntu:12.04  /bin/bash

進(jìn)入容器

docker exec -it 容器id bash

因?yàn)楸疚牟皇?Docker 的教程,所以只是拋磚引玉,具體的教程和文檔網(wǎng)上到處都是。

安裝 Docker Desktop

接下來(lái)開(kāi)始本地實(shí)踐了,用 Docker 快速搭一套本地環(huán)境。

有一些 Docker 的可視化客戶端可以安裝,幫我們更方便更直觀的管理鏡像、容器,當(dāng)然如果你很厲害的話,完全用命令行也不是不行。

我就沒(méi)這么厲害了,那些參數(shù)根本記不住,所以必須要裝客戶端。我安裝的是 Docker Desktop,官方客戶端,支持 Mac、Linux、Windows,我大部分時(shí)候用 Mac,有時(shí)候也要用 Windows,所以Docker Desktop是不二選擇。

如果你只用 Mac 的話,也可以安裝 OrbStack(https://orbstack.dev/),據(jù)說(shuō)比 Docker Desktop 要流暢一些。

下載安裝

訪問(wèn) Docker Desktop 官網(wǎng) https://www.docker.com/products/docker-desktop/,根據(jù)你的系統(tǒng)下載對(duì)應(yīng)的版本。

圖片

下載完一鍵安裝就可以了,Docker 環(huán)境直接幫你裝好了,省心省事兒。下面是它的控制臺(tái)界面。左側(cè)導(dǎo)航可以查看鏡像列表、容器列表、映射的Volumes。

圖片

我們?cè)诿钚休斎?nbsp;docker -v,如果出現(xiàn)正確的版本號(hào),說(shuō)明 docker服務(wù)已經(jīng)安裝正常了。

Docker version 24.0.2, build cb74dfc

接下來(lái)有一件事兒是必須要做的,那就是設(shè)置國(guó)內(nèi)鏡像源,道理大家都懂,你要是用國(guó)外的鏡像源,一天都不一定能搞下來(lái)一個(gè)。

點(diǎn)擊「設(shè)置」按鈕,在左側(cè)選擇「Docker Engine」

圖片

,然后在右側(cè)的配置框中添加如下配置,加到最下面即可:

"registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com/"
  ]

加完后,點(diǎn)擊「Apply & restart」,這時(shí)候會(huì)重啟 Docker 服務(wù)。

安裝一個(gè)服務(wù)

MySQL、Nginx、Redis、Zookeeper 這些都是服務(wù),每一個(gè)都可以按照這種方式安裝,不管你的項(xiàng)目需要多少個(gè)服務(wù),一個(gè)個(gè)安裝就好了,很快的呦。

正好我最進(jìn)要學(xué)一下 PostgreSQL,我就直接啟動(dòng)一個(gè) docker 容器了,不在本地安裝了。當(dāng)然了,像數(shù)據(jù)庫(kù)這種I/O型的應(yīng)用是不建議容器化的,但是本地開(kāi)發(fā)測(cè)試無(wú)所謂。

在這個(gè)搜索框輸入關(guān)鍵詞,查找對(duì)應(yīng)的鏡像,我在這里輸入關(guān)鍵詞 PostgreSQL。如果安裝 Nginx 那就是輸入 Nginx,以此類推。

圖片

看,出來(lái)了一大堆,我一般都是找第一個(gè),也就是下載量最大的這個(gè)。

圖片

可以 pull 或者 run,pull 是拉取鏡像,run 是拉取鏡像+啟動(dòng)容器。

圖片

我一般都是直接 run,點(diǎn)一下 run,等一會(huì)兒,因?yàn)榍懊嬉呀?jīng)設(shè)置了國(guó)內(nèi)鏡像源,所以速度很快,十幾秒鐘。(根據(jù)網(wǎng)速快慢不同,因?yàn)橐螺d鏡像文件,有的應(yīng)用有上百M(fèi))

下載完之后,因?yàn)檫x的是 run,所以直接彈出了啟動(dòng)參數(shù)。

圖片

設(shè)置鏡像名稱

容器名稱(Container name)就是為了我們一看到它就知道是干什么的,用來(lái)方便管理的,我就直接命名為 PostgreSQL了。

設(shè)置端口映射(Ports)

服務(wù)本身有自己的端口,例如 MySQL 是3306,這是服務(wù)本身在容器內(nèi)的啟動(dòng)端口,但最終我們要通過(guò)宿主機(jī)去訪問(wèn)服務(wù),所以要將這個(gè)容器內(nèi)的端口綁定到一個(gè)宿主機(jī)端口,這叫做端口映射,這樣一來(lái),我們就可以通過(guò)宿主機(jī)的端口訪問(wèn)到容器內(nèi)的端口了。比如我將 MySQL 容器的 3306 端口映射到宿主機(jī)的 13306 端口,之后我在設(shè)置數(shù)據(jù)庫(kù)連接的時(shí)候,就用本機(jī) IP:13306就能訪問(wèn) MySQL 容器了。

在我這個(gè) PostgreSQL 容器上,我將本機(jī)的 15432和容器的 5432端口綁定,之后就可以用 15432做連接端口了。

目錄映射(Volumes)

很多服務(wù)都會(huì)用到存儲(chǔ)目錄,但是容器本身就在宿主機(jī)上,所以需要將服務(wù)在容器內(nèi)的目錄映射到宿主機(jī)的目錄上,這叫目錄映射。例如將 Nginx 容器的 /etc/nginx目錄映射到宿主機(jī)的 /apps/nginx/目錄上,那之后我在宿主機(jī)訪問(wèn) /apps/nginx目錄時(shí),就能看到 Nginx 容器的配置文件了。

在我這個(gè)PostgreSQL 容器上,我將 /etc/postgresql/postgresql.conf配置文件映射到了我本地的一個(gè)目錄上。

環(huán)境變量

一個(gè)服務(wù)啟動(dòng)可能會(huì)用到啟動(dòng)變量,這些變量可以通過(guò)環(huán)境變量的方式進(jìn)行配置。例如,我們啟動(dòng)一個(gè) Java jar 包,要配置 JVM 相關(guān)的參數(shù),這些參數(shù)就可以放到環(huán)境變量中,供啟動(dòng)的時(shí)候使用。

因?yàn)?PostgreSQL 需要密碼,所以這里就設(shè)置一個(gè)密碼的環(huán)境變量 POSTGRES_PASSWORD。

都設(shè)置好之后,點(diǎn)擊run按鈕,啟動(dòng)容器。

然后我們看到容器已經(jīng)啟動(dòng)了,有相應(yīng)的日志打印出來(lái)。

圖片

然后點(diǎn)擊左側(cè)的Containers,可以看到已經(jīng)啟動(dòng)的容器和一些基本配置。

圖片

然后就可以通過(guò)客戶端進(jìn)行連接了。

圖片

圖片

另外,還可以在容器詳情中查看容器的內(nèi)部文件、狀態(tài)、配置信息、日志等,以及進(jìn)入命令行。

圖片

最后

第一次可能比較慢,熟悉了之后就非常快了,比你在本地直接安裝配置要快的多,而且一些軟件安裝配置起來(lái)非常繁瑣,會(huì)浪費(fèi)很多不必要的時(shí)間。

還有很多開(kāi)源的框架、應(yīng)用提供docker版本,掌握了這個(gè)方法后,可以很快的安裝這些框架、應(yīng)用來(lái)驗(yàn)證和使用,用戶體驗(yàn)直接上升一個(gè)數(shù)量級(jí)。


網(wǎng)站欄目:用了八年的方式-用Docker瞬間搭建本地開(kāi)發(fā)環(huán)境
本文URL:http://www.dlmjj.cn/article/djedgii.html