成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用了八年的方式-用 Docker 瞬間搭建本地開發環境

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

有些時候我們需要在本地搭開發環境,比如平時學習新技術的時候。或者有時候公司的項目需要在本地建一套類似的,方便調試修改。

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

有什么快速有優雅的方式沒有?

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

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

圖片圖片

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

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

Docker 原理和基礎命令

基本原理

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

Docker 使用 Google 公司推出的 Go 語言進行開發實現,基于 Linux 內核的cgroup,namespace,以及 OverlayFS類的 Union FS 等技術,對進程進行封裝隔離,屬于操作系統層面的虛擬化技術。由于隔離的進程獨立于宿主和其它的隔離的進程,因此也稱其為容器。

Docker 經常拿來和虛擬機來比較,因為它們兩個的用處和用法都很相似,就是在一臺實體機上啟動多個虛擬系統(暫且這么說)。如果基于使用的層面來講,你完全可以把 Docker 當做虛擬機來用,然而實際的底層技術原理是完全不一樣的。

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

基礎命令

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

鏡像相關

獲取鏡像

docker pull 鏡像名稱

查看鏡像列表

docker image ls

容器相關

查看容器

docker ps -a

新建并啟動容器

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

進入容器

docker exec -it 容器id bash

因為本文不是 Docker 的教程,所以只是拋磚引玉,具體的教程和文檔網上到處都是。

安裝 Docker Desktop

接下來開始本地實踐了,用 Docker 快速搭一套本地環境。

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

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

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

下載安裝

訪問 Docker Desktop 官網 https://www.docker.com/products/docker-desktop/,根據你的系統下載對應的版本。

圖片圖片

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

圖片圖片

我們在命令行輸入 docker -v,如果出現正確的版本號,說明 docker服務已經安裝正常了。

Docker version 24.0.2, build cb74dfc

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

點擊「設置」按鈕,在左側選擇「Docker Engine」

圖片圖片

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

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

加完后,點擊「Apply & restart」,這時候會重啟 Docker 服務。

安裝一個服務

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

正好我最進要學一下 PostgreSQL,我就直接啟動一個 docker 容器了,不在本地安裝了。當然了,像數據庫這種I/O型的應用是不建議容器化的,但是本地開發測試無所謂。

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

圖片圖片

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

圖片圖片

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

圖片圖片

我一般都是直接 run,點一下 run,等一會兒,因為前面已經設置了國內鏡像源,所以速度很快,十幾秒鐘。(根據網速快慢不同,因為要下載鏡像文件,有的應用有上百M)

下載完之后,因為選的是 run,所以直接彈出了啟動參數。

圖片圖片

設置鏡像名稱

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

設置端口映射(Ports)

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

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

目錄映射(Volumes)

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

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

環境變量

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

因為 PostgreSQL 需要密碼,所以這里就設置一個密碼的環境變量 POSTGRES_PASSWORD。

都設置好之后,點擊run按鈕,啟動容器。

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

圖片圖片

然后點擊左側的Containers,可以看到已經啟動的容器和一些基本配置。

圖片圖片

然后就可以通過客戶端進行連接了。

圖片圖片

圖片圖片

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

圖片圖片

最后

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

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

責任編輯:武曉燕 來源: 古時的風箏
相關推薦

2022-06-24 10:11:15

DockerLinux

2021-12-16 13:04:41

消息隊列緩存

2018-08-01 14:42:07

團隊職業工作

2015-12-30 13:58:00

DockerGit開發環境

2025-06-24 08:04:45

2020-04-23 11:50:05

蘋果安全漏洞黑客

2018-09-11 17:40:23

容器數據云計算

2016-11-03 09:49:04

2009-08-18 11:01:51

2020-11-19 15:21:21

密碼網絡攻擊網絡安全

2009-01-18 11:45:57

2016-09-08 16:04:59

JavaDocker前端

2022-04-07 07:36:04

APIJava 8JWT

2020-02-13 09:04:00

.com域名費用

2014-10-30 09:50:05

HTML5

2010-04-26 16:16:28

龍芯服務器

2010-03-12 13:32:02

python2.6

2022-11-21 16:11:04

2009-07-03 16:56:37

JSP開發環境

2024-12-12 08:41:28

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色大片网 | 成人网av| 特级生活片 | 久久综合一区二区三区 | 日韩精品无码一区二区三区 | 国产天堂| 亚洲高清在线播放 | 一区二区三区精品 | 中文字幕一区二区三区四区 | 视频一区在线播放 | 欧美日韩一本 | 亚洲精品一区二区三区四区高清 | 国产精品久久久久久久久久久免费看 | 色婷婷亚洲一区二区三区 | 中国美女撒尿txxxxx视频 | 噜噜噜噜狠狠狠7777视频 | 色成人免费网站 | 欧美视频一区二区三区 | 欧美精品中文字幕久久二区 | 精品视频在线观看 | 精品国产乱码久久久久久中文 | 日韩欧美在线观看视频 | 久久久久久国产精品 | 91精品国产91久久综合桃花 | 精品伦精品一区二区三区视频 | 欧美大片在线观看 | 久久精品免费一区二区 | 韩三级在线观看 | 亚洲一区日韩 | 亚洲精品99 | 国产精品无码专区在线观看 | 婷婷中文在线 | 91五月天 | 成人一区二区三区在线观看 | 免费看国产精品视频 | 中文字幕av在线一二三区 | 国产小视频在线 | 国产精品久久99 | 精品国产一区二区三区日日嗨 | 欧美一级片在线 | 国产一级视频在线 |