自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

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

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

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

圖片圖片

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

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

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

基本原理

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

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

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

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

基礎(chǔ)命令

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

鏡像相關(guān)

獲取鏡像

docker pull 鏡像名稱

查看鏡像列表

docker image ls

容器相關(guān)

查看容器

docker ps -a

新建并啟動容器

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

進(jìn)入容器

docker exec -it 容器id bash

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

安裝 Docker Desktop

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

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

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

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

下載安裝

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

圖片圖片

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

圖片圖片

我們在命令行輸入 docker -v,如果出現(xiàn)正確的版本號,說明 docker服務(wù)已經(jīng)安裝正常了。

Docker version 24.0.2, build cb74dfc

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

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

圖片圖片

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

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

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

安裝一個服務(wù)

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

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

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

圖片圖片

看,出來了一大堆,我一般都是找第一個,也就是下載量最大的這個。

圖片圖片

可以 pull 或者 run,pull 是拉取鏡像,run 是拉取鏡像+啟動容器。

圖片圖片

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

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

圖片圖片

設(shè)置鏡像名稱

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

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

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

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

目錄映射(Volumes)

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

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

環(huán)境變量

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

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

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

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

圖片圖片

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

圖片圖片

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

圖片圖片

圖片圖片

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

圖片圖片

最后

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

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

責(zé)任編輯:武曉燕 來源: 古時的風(fēng)箏
相關(guān)推薦

2022-06-24 10:11:15

DockerLinux

2015-12-30 13:58:00

DockerGit開發(fā)環(huán)境

2021-12-16 13:04:41

消息隊列緩存

2018-08-01 14:42:07

團(tuán)隊職業(yè)工作

2020-04-23 11:50:05

蘋果安全漏洞黑客

2016-11-03 09:49:04

2018-09-11 17:40:23

容器數(shù)據(jù)云計算

2016-09-08 16:04:59

JavaDocker前端

2020-11-19 15:21:21

密碼網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2009-08-18 11:01:51

2009-01-18 11:45:57

2010-03-12 13:32:02

python2.6

2020-02-13 09:04:00

.com域名費(fèi)用

2022-04-07 07:36:04

APIJava 8JWT

2010-04-26 16:16:28

龍芯服務(wù)器

2014-10-30 09:50:05

HTML5

2009-07-03 16:56:37

JSP開發(fā)環(huán)境

2022-11-21 16:11:04

2024-12-12 08:41:28

2015-01-05 14:16:16

DockerFig自動化容器編排
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號