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

誰(shuí)說(shuō)前端不用懂,手摸手 Docker 從入門(mén)到實(shí)踐

開(kāi)發(fā) 前端
在下最近遇到要在服務(wù)器上安裝 Mysql、Nginx、EasyMock 等工具的場(chǎng)景,這里記錄一下我使用 Docker 安裝的過(guò)程,希望也能在類(lèi)似的場(chǎng)景中幫助到大家~

 

[[343354]]

本文轉(zhuǎn)載自微信公眾號(hào)「前端下午茶」,作者SHERlocked93。轉(zhuǎn)載本文請(qǐng)聯(lián)系前端下午茶公眾號(hào)。  

 在下最近遇到要在服務(wù)器上安裝 Mysql、Nginx、EasyMock 等工具的場(chǎng)景,這里記錄一下我使用 Docker 安裝的過(guò)程,希望也能在類(lèi)似的場(chǎng)景中幫助到大家~

  • CentOS 版本:7.6
  • Nginx 版本:1.16.1
  • Docker 版本:19.03.12

你多學(xué)一樣本事,就少說(shuō)一句求人的話(huà)

1. 介紹

1.1 出現(xiàn)的原因

前后端開(kāi)發(fā)到測(cè)試到生產(chǎn)的過(guò)程中,經(jīng)常會(huì)遇到一個(gè)問(wèn)題,明明我在本地跑沒(méi)問(wèn)題,為什么到測(cè)試環(huán)境或者生產(chǎn)環(huán)境就報(bào)錯(cuò)了了呢,常常這是因?yàn)殚_(kāi)發(fā)、測(cè)試、生產(chǎn)的環(huán)境與配置不同導(dǎo)致的。

折騰過(guò)環(huán)境配置的人都明白其中麻煩,換一臺(tái)系統(tǒng)、虛擬機(jī)、機(jī)器,就又要重來(lái)一次,費(fèi)力費(fèi)時(shí)。由于環(huán)境和配置的原因,各種奇奇怪怪因?yàn)榄h(huán)境和配置的 Bug,總是像打地鼠游戲里面的地鼠一樣不斷冒出來(lái) ??

[[343355]]

Docker

Docker 對(duì)這個(gè)問(wèn)題給出了一個(gè)很好的解決方案,通過(guò)鏡像將除了系統(tǒng)之外所需要的系統(tǒng)環(huán)境由下而上打包,達(dá)到服務(wù)跨平臺(tái)的無(wú)縫運(yùn)作。也就是說(shuō),安裝的時(shí)候,把特定的環(huán)境一模一樣地搬過(guò)來(lái),從而解決「在我的電腦上能跑,在 xx 環(huán)境就跑不了」的情況。

另外一個(gè)重要的原因,就是輕量,基于容器的虛擬化,Docker 的鏡像僅包含業(yè)務(wù)運(yùn)行所需的 runtime 環(huán)境,一個(gè) CentOS/Ubuntu 基礎(chǔ)鏡像僅 170M,因?yàn)檩p量一個(gè)宿主機(jī)可以輕松安裝數(shù)百個(gè)容器。

1.2 是什么

Docker 是基于 Go 語(yǔ)言實(shí)現(xiàn)的云開(kāi)源項(xiàng)目,從 2013 年發(fā)布到現(xiàn)在一直廣受關(guān)注。Docker 可以讓你像使用集裝箱一樣快速的組合成應(yīng)用,并且可以像運(yùn)輸標(biāo)準(zhǔn)集裝箱一樣,盡可能的屏蔽代碼層面的差異。它將應(yīng)用程序與該程序的依賴(lài),打包在一個(gè)文件里面。運(yùn)行這個(gè)文件,就會(huì)生成一個(gè)虛擬容器。

程序在這個(gè)虛擬容器里運(yùn)行,就好像在真實(shí)的物理機(jī)上運(yùn)行一樣。有了 Docker,就不用擔(dān)心環(huán)境問(wèn)題。

本文就不對(duì)比虛擬機(jī)跟 Docker 的區(qū)別和優(yōu)劣了,每個(gè)文章都有,說(shuō)爛了,想了解的話(huà)可以百度一下 ??,我這里就不多說(shuō)了,下面直接看看怎么安裝怎么用起來(lái)吧。

2. 安裝 & 配置

2.1 Mac 下安裝

在下直接使用 Homebrew Cask 來(lái)安裝,Mac 下:

  1. # Homebrew 安裝 
  2. $ braw cask install docke 

即可,安裝完輸入命令,直接報(bào)錯(cuò)!

  1. ➜  ~ docke 
  2. zsh: command not found: docker  # 報(bào)錯(cuò) 

遇到這個(gè)報(bào)錯(cuò)別擔(dān)心,安裝完之后要在應(yīng)用列表里面雙擊 Docker 應(yīng)用,輸入密碼之后就可以使用這個(gè)命令了 ??。

2.2 CentOS 下安裝

Docker 要求 CentOS 版本必須在 6.5 及以上才可以安裝。

  1. # 安裝 
  2. $ sudo yum install yum-utils device-mapper-persistent-data lvm2 
  3. $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
  4. $ sudo yum install docker-ce 
  5.  
  6. # 開(kāi)啟 Docke 
  7. $ sudo systemctl start docke 

在 Windows 上可以直接下載安裝包來(lái)安裝,或者 Mac 上不使用 Homebrew 也可以去官網(wǎng)直接下載安裝包來(lái)安裝,百度一下到處都是安裝方法,其他的就不用多說(shuō)。

3. 簡(jiǎn)單配置并跑起來(lái)

3.1 配置鏡像加速

在 MacOS 的 Docker 配置 Perferences -> Docker Engine 或者 Windows 的 Settings -> Deamon 中的 JSON 中增加一項(xiàng) registry-mirrors 如下

Docker鏡像加速配置

配置完之后在命令行中 docker info 就可以查看到我們配置的鏡像加速地址了。

  1. ➜  ~ sudo docker info 
  2. ... 
  3.  Registry Mirrors: 
  4.   https://reg-mirror.qiniu.com/ 
  5.   http://hub-mirror.c.163.com/ 
  6.   https://registry.docker-cn.com/ 
  7. ... 

如果你的系統(tǒng)的 Docker 沒(méi)有客戶(hù)端,比如 CentOS 中,可以直接修改 deamon 配置文件:

  1. # 修改/創(chuàng)建 docker 的 deamon 配置文件 
  2. $ sudo vi /etc/docker/daemon.json 
  3.  
  4. # 修改為如下配置 
  5.   "experimental"false
  6.   "debug"true
  7.   "registry-mirrors": [ 
  8.     "https://reg-mirror.qiniu.com"
  9.     "http://hub-mirror.c.163.com"
  10.     "https://registry.docker-cn.com" 
  11.   ] 
  12.  
  13. # 修改完 :wq 重啟 
  14. $ sudo systemctl restart docke 

3.2 Hello World !

然后就可以快樂(lè)跑起來(lái)我們第一個(gè) Docker 指令 Hello World 了

Docker跑起Helloworld

Good start !

4. 鏡像 & 容器 & 倉(cāng)庫(kù)

鏡像和容器的關(guān)系就像類(lèi)和類(lèi)的實(shí)例,一個(gè)鏡像可以同時(shí)跑多個(gè)容器,單個(gè)容器實(shí)例又可以創(chuàng)建新的鏡像。如下圖:

鏡像容器倉(cāng)庫(kù)

下面解釋一下這個(gè)圖里面出現(xiàn)的元素

概念 說(shuō)明
Docker 鏡像 Images 用于創(chuàng)建 Docker 容器的只讀模板,比如 Ubuntu 16.04系統(tǒng)、Nginx 1.16.0 等,是一個(gè)特殊的文件系統(tǒng),包括容器運(yùn)行時(shí)需要的程序、庫(kù)、資源、參數(shù)等,但不包含任何動(dòng)態(tài)數(shù)據(jù),內(nèi)容在構(gòu)建后也不會(huì)被改變,一個(gè)鏡像可以創(chuàng)建多個(gè)容器
Docker 容器 Container 容器是獨(dú)立運(yùn)行、相互隔離的一個(gè)或一組應(yīng)用,是鏡像創(chuàng)建的運(yùn)行實(shí)例,實(shí)質(zhì)是進(jìn)程,可以看作為一個(gè)簡(jiǎn)易版的 Linux 環(huán)境 + 運(yùn)行在其中的應(yīng)用程序
Docker 客戶(hù)端 Client 客戶(hù)端通過(guò)命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 與 Docker 的守護(hù)進(jìn)程通信
Docker 主機(jī) Host 一個(gè)物理或者虛擬的機(jī)器用于執(zhí)行 Docker 守護(hù)進(jìn)程和容器
Docker 倉(cāng)庫(kù) Repository 集中存放鏡像文件的地方,分為公有倉(cāng)庫(kù)和私有倉(cāng)庫(kù)。
Docker 注冊(cè)服務(wù)器 Registry 是一個(gè)集中存儲(chǔ)、分發(fā)鏡像的服務(wù),官方的叫 Docker Hub。一個(gè) Docker Registry 中可包含多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)可以包含多個(gè)標(biāo)簽 Tag 的鏡像,不同的標(biāo)簽對(duì)應(yīng)不同的版本
Docker Machine Docker Machine 是一個(gè)簡(jiǎn)化 Docker 安裝的命令行工具,通過(guò)一個(gè)簡(jiǎn)單的命令行即可在相應(yīng)的平臺(tái)上安裝Docker,比如 VirtualBox、 Digital Ocean、Microsoft Azure

容器的生命周期圖示

容器的生命周期

容器的五個(gè)核心狀態(tài),也就是圖中色塊表示的:Created、Running、Paused、Stopped、Deleted:

  1. Created:容器已經(jīng)被創(chuàng)建,容器所需的相關(guān)資源已經(jīng)準(zhǔn)備就緒,但容器中的程序還未處于運(yùn)行狀態(tài)。
  2. Running:容器正在運(yùn)行,也就是容器中的應(yīng)用正在運(yùn)行。
  3. Paused:容器已暫停,表示容器中的所有程序都處于暫停 ( 不是停止 ) 狀態(tài)。
  4. Stopped:容器處于停止?fàn)顟B(tài),占用的資源和沙盒環(huán)境都依然存在,只是容器中的應(yīng)用程序均已停止。
  5. Deleted:容器已刪除,相關(guān)占用的資源及存儲(chǔ)在 Docker 中的管理信息也都已釋放和移除。

本文主要關(guān)注于使用,就不太贅述這些狀態(tài)的切換等,下面直接上手。

5. 基本使用

5.1 操作命令

  1. # 開(kāi)啟 Docker 開(kāi)機(jī)自啟動(dòng) 
  2. $ sudo systemctl enable docke 
  3.  
  4. # 關(guān)閉 Docker 開(kāi)機(jī)自啟動(dòng) 
  5. $ sudo systemctl disable docke 

5.2 鏡像命令

  1. # 去下載鏡像,先從本地找,沒(méi)有去鏡像,最后沒(méi)有去 hub,標(biāo)簽不寫(xiě)默認(rèn)為 lastest 
  2. $ docker pull [鏡像名]:[標(biāo)簽Tag] 
  3.  
  4. # 列出本機(jī)的所有 image 文件,-a 顯示本地所有鏡像(包括中間鏡像),-q 只顯示鏡像ID,--digests 顯示鏡像的摘要信息 
  5. $ docker image ls 
  6. $ docker images 
  7.  
  8. # 刪除 image 文件, -f 強(qiáng)制刪除鏡像 
  9. $ docker rmi [鏡像名][:標(biāo)簽Tag] 
  10. $ docker rmi [鏡像名1][:標(biāo)簽Tag] [鏡像名2][:標(biāo)簽Tag]    # 刪多個(gè) 
  11. $ docker rmi $(docker ps -a -q)    # 刪全部,后面是子命令 
  12.  
  13. # 查詢(xún)鏡像名稱(chēng),--no-trunc 顯示完整的鏡像描述,--filter=stars=30 列出star不少于指定值的鏡像,--filter=is-automated=true 列出自動(dòng)構(gòu)建類(lèi)型的鏡像 
  14. $ docker search [關(guān)鍵字] 
  15.  
  16. # 下載鏡像,標(biāo)簽 tag 不寫(xiě)默認(rèn)為 lastest,也可以自己加比如 :3.2.0 
  17. $ docker pull [鏡像名][:標(biāo)簽Tag] 

5.3 容器命令

  1. # 列出本機(jī)正在運(yùn)行的容器,-a 列出本機(jī)所有容器包括終止運(yùn)行的容器,-q 靜默模式只顯示容器編號(hào),-l 顯示最近創(chuàng)建的容器 
  2. $ docker container ls     # 等價(jià)于下面這個(gè)命令 
  3. $ docker ps 
  4.  
  5. # 新建并啟動(dòng)容器 
  6. $ docker run [option] [容器名] 
  7.  
  8. # 啟動(dòng)容器 
  9. $ docker start [容器ID]/[容器Names] 
  10.  
  11. # 重啟容器 
  12. $ docker restart [容器ID]/[容器Names] 
  13.  
  14. # 終止容器運(yùn)行 
  15. $ docker kill [容器ID]  # 強(qiáng)行終止,相當(dāng)于向容器里面的主進(jìn)程發(fā)出 SIGKILL 信號(hào),那些正在進(jìn)行中的操作會(huì)全部丟失 
  16. $ docker kill $(docker ps -a -q) # 強(qiáng)行終止所有容器 
  17. $ docker stop [容器ID]  # 從容終止,相當(dāng)于向容器里面的主進(jìn)程發(fā)出 SIGTERM 信號(hào),然后過(guò)一段時(shí)間再發(fā)出 SIGKILL 信號(hào) 
  18. $ docker stop $(docker ps -a -q) # 終止所有容器 
  19.  
  20. # 終止運(yùn)行的容器文件,依然會(huì)占據(jù)硬盤(pán)空間,可以使用 docker container rm 命令刪除,-f 強(qiáng)制刪除可以刪除正在運(yùn)行的容器 
  21. $ docker rm [容器ID] 
  22. $ docker rm `docker ps -aq`    # 刪除所有已經(jīng)停止的容器,因?yàn)闆](méi)停止的rm刪不了需要加-f 
  23.  
  24. # 查看容器的輸出,-t加入時(shí)間戳,-f跟隨最新日志打印,--tail數(shù)字顯示最后多少條,如果docker run時(shí),沒(méi)有使用-it,就要用這個(gè)命令查看輸出 
  25. $ docker logs [容器ID] 
  26.  
  27. # 查看容器進(jìn)程信息 
  28. $ docker top [容器ID]/[容器Names] 
  29. $ docker port [容器ID]/[容器Names] 
  30.  
  31. # 退出容器 
  32. $ exit           # 容器退出 
  33. ctrl + p + q     # 容器退出,快捷鍵 
  34.  
  35. # 進(jìn)入容器 
  36. $ docker attach [容器ID]      # 退出容器時(shí)會(huì)讓容器停止,本機(jī)的輸入直接輸?shù)饺萜髦?nbsp;
  37. $ docker exec -it [容器ID]    # 退出容器時(shí)不會(huì)讓容器停止,在已運(yùn)行的容器中執(zhí)行命令,不創(chuàng)建和啟動(dòng)新的容器 
  38.  
  39. # 設(shè)置容器在docker啟動(dòng)時(shí)自動(dòng)啟動(dòng) 
  40. $ docker container update --restart=always [容器名字] 

這里要特別說(shuō)一下 docker run 的 option,因?yàn)樽畛S茫?/p>

  1. --name 為容器指定一個(gè)名稱(chēng);
  2. -d 容器啟動(dòng)后進(jìn)入后臺(tái),并返回容器 ID,即啟動(dòng)守護(hù)式容器;
  3. -P 隨機(jī)端口映射;
  4. -p 80:8080 將本地 80 端口映射到容器的 8080 端口;
  5. bash 容器啟動(dòng)以后,內(nèi)部第一個(gè)執(zhí)行的命令。這里啟動(dòng) bash,保證用戶(hù)可以使用 Shell;
  6. -i 以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用;
  7. -t 為容器重新分配一個(gè)偽輸入終端,容器的 Shell 會(huì)映射到當(dāng)前的 Shell,然后在本機(jī)窗口輸入的命令,就會(huì)傳入容器,通常與 -i 同時(shí)使用;
  8. --rm 在容器終止運(yùn)行后自動(dòng)刪除容器文件;
  9. --restart=always 設(shè)置容器自啟動(dòng);
  10. -v /xxx:/yyy 映射命令,把本機(jī)的 xxx 目錄映射到容器中的 yyy 目錄,也就是說(shuō)改變本機(jī)的 xxx 目錄下的內(nèi)容, 容器 yyy 目錄中的內(nèi)容也會(huì)改變;

比如我在 CentOS 下跑起來(lái)一個(gè) CentOS 的 Docker 容器:

  1. # 下載 
  2. $ docker pull centos 
  3.  
  4. # 在上面下載的 centos 鏡像基礎(chǔ)上,新建一個(gè)容器名為 mycentos0901 的 centos 實(shí)例,并進(jìn)入這個(gè)容器的 bash 
  5. $ docker run -it --name mycentos0901 0d120b6ccaa8 
  6.  
  7. [root@169c9fffeecd /]   # 進(jìn)入容器,下面輸入命令,注意這里 root 后面的一串 ID 
  8. $ ls       # 可以看到centos的根目錄文件列表 
  9. $ docker   # bash: docker: command not found 這個(gè)容器沒(méi)有安裝docke 

是不是很神奇,我們可以在一開(kāi)始的 CentOS 下面執(zhí)行 docker ps 來(lái)查看容器列表:

image-20200901225909737

你會(huì)發(fā)現(xiàn)上面那個(gè) ID,正是下面列表中跑起來(lái)的這個(gè)容器的 ID,鏡像的 ID 也是我們前面 pull 下來(lái)的 CentOS 鏡像 ID,名字也是我們起的 mycentos0901。

如果 docker run 之后報(bào) Conflict. The container name "xxxx" is already in use by container 就直接運(yùn)行 docker rm $(docker ps -a -q) 刪除已停止的容器,或者精確刪除 docker rm [containerID] 也可以,就可以了。

5.4 幾個(gè)常見(jiàn)場(chǎng)景的命令使用

守護(hù)式啟動(dòng)容器

使用 centos 以后臺(tái)模式啟動(dòng)一個(gè)容器 docker run -d --name mycentos0903 0d120b6ccaa8,啟動(dòng)之后 docker ps -a 查看,發(fā)現(xiàn)容器并不在運(yùn)行中,這是因?yàn)?Docker 的運(yùn)行機(jī)制:Docker 容器后臺(tái)運(yùn)行,必須有一個(gè)前臺(tái)進(jìn)程。

容器運(yùn)行的命令如果不是那些一直掛起的命令,比如 top、tail ,運(yùn)行結(jié)束會(huì)自動(dòng)退出。所以為了讓容器持續(xù)在后臺(tái)運(yùn)行,那么需要將運(yùn)行的程序以前臺(tái)進(jìn)程的形式運(yùn)行。

比如這里在后臺(tái)運(yùn)行一個(gè)命令,這個(gè)命令一直在打印 docker run -d centos /bin/sh -c "while true; do echo hello zzyy; sleep 2; done",然后我們 logs 查看一下:

docker_logs

退出容器后對(duì)容器操作

退出容器后可以通過(guò) exec 方法對(duì)正在運(yùn)行的容器進(jìn)行操作:

image-20200911142617186

在容器中拷貝文件到外部

拷貝文件使用 cp 命令

  1. $ docker cp [容器ID]/[容器Names]:[要拷貝的文件目錄](méi) [本機(jī)目錄](méi)   # 容器文件拷貝到本機(jī) 
  2. $ docker cp [本機(jī)目錄](méi) [容器ID]/[容器Names]:[要拷貝的文件目錄](méi)   # 本機(jī)文件拷貝到容器 

cp 不僅能把容器中的文件/文件夾拷貝到本機(jī),也可以把本機(jī)中的文件/文件夾拷貝到容器。

演示一下,這里先到容器里面創(chuàng)建一個(gè)無(wú)聊的文件 xixi.txt,然后拷貝到本機(jī):

image-20200921210352644

實(shí)用的時(shí)候,我們可以拷貝配置、日志等文件到本地。

6. 安裝 MySQL

  1. # 查詢(xún)鏡像 
  2. $ docker search mysql 
  3.  
  4. # 下載鏡像,實(shí)測(cè)沒(méi)配置鏡像加速的時(shí)候會(huì)比較慢,配置了就好一些 
  5. $ docker pull mysql 
  6.  
  7. # 查看鏡像 
  8. $ docker images 
  9.  
  10. # 創(chuàng)建并運(yùn)行容器 
  11. $ docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=888888 -v /Users/sherlocked93/Personal/configs/mysql.d:/etc/mysql/conf.d --name localhost-mysql mysql 

稍微解釋一下上面的參數(shù):

  1. -p 3307:3306 將本機(jī)的 3307 端口映射到 mysql 容器的 3306 端口,根據(jù)需要自行更改;
  2. -e MYSQL_ROOT_PASSWORD= 設(shè)置遠(yuǎn)程登錄的 root 用戶(hù)密碼;
  3. --name 可選,設(shè)置容器別名;
  4. -v xxx/mysql.d:/etc/mysql/conf.d 將本地目錄下設(shè)置文件夾映射到容器的 /etc/mysql/conf.d
  5. -v xxx/logs:/logs 將本機(jī)指定目錄下的 logs 目錄掛載到容器的 /logs
  6. -v xxx/data:/var/lib/mysql 將主機(jī)制定目錄下的 data 目錄掛載到容器的 /var/lib/mysql

運(yùn)行截圖:

安裝Mysql

然后去 Navicat 中就可以連接到 MySQL 了。

這也太爽了!真的是幾行命令就裝好了啊,比之前真是快樂(lè)多了 ??

7. 安裝 Nginx

Nginx 的安裝和其他的類(lèi)似,如果你還不太了解 Nginx 如何使用,可以參看 這篇文章,看完基本就了解如何使用和配置了。

  1. # 查詢(xún)/下載鏡像 
  2. $ docker search nginx 
  3. $ docker pull nginx 

image-20200922203203685

然后創(chuàng)建一個(gè)臨時(shí)的容器,目的是把默認(rèn)配置拷貝到本機(jī),我這里把配置文件放到 /mnt 目錄下,主要是三個(gè)配置文件夾:

  1. /etc/nginx 放置 Nginx 配置文件;
  2. /var/log/nginx/ 放置 Nginx 日志文件;
  3. /usr/share/nginx/html/ 放置 Nginx 前端靜態(tài)文件都放在這個(gè)文件夾;

分別把這幾個(gè)目錄都拷貝到本機(jī)的 /mnt 文件夾下的 nginx、nginx_logs、html 文件夾。

剛剛創(chuàng)建的臨時(shí)容器沒(méi)用了 docker rm -f [臨時(shí)容器ID] 把臨時(shí)容器干掉,然后 docker run 重新創(chuàng)建 Nginx 容器:

  1. $ docker run -d --name localhost-nginx -p 8082:80 \ 
  2. -v /mnt/nginx:/etc/nginx \ 
  3. -v /mnt/nginx_logs:/var/log/nginx \ 
  4. -v /mnt/html:/usr/share/nginx/html \ 
  5. --privileged=true nginx 

--privileged=true 表示容器內(nèi)部對(duì)掛載的目錄擁有讀寫(xiě)等特權(quán)。

其他配置剛剛上面之前已經(jīng)講過(guò),應(yīng)該不用講了。

image-20200922204931582

然后在你自己瀏覽器上就可以訪問(wèn)了,如果是云服務(wù)器,記得開(kāi)放對(duì)應(yīng)端口。

8. 安裝 Easy Mock

因?yàn)?Easy Mock 依賴(lài) Redis 和 MongoDB,因此本地環(huán)境使用 docker-compose 來(lái)搭建 Easy Mock 應(yīng)該算是最佳實(shí)踐了。

安裝 docker-compose

官方文檔:https://docs.docker.com/compose/install/

首先你得確定擁有 docker 環(huán)境,如果你是 Windows / Mac 用戶(hù),那么安裝客戶(hù)端,就會(huì)自帶 docker-compose 了。

因?yàn)楸敬挝覀兪窃谠品?wù)器 CentOS7.6 上搭建,所以我們需要自行安裝 docker-compose,運(yùn)行如下命令,下載當(dāng)前穩(wěn)定版本的 docker-compose

  1. $ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(unam 

修改文件權(quán)限為可執(zhí)行文件

  1. $ sudo chmod +x /usr/local/bin/docker-compose 

驗(yàn)證是否安裝成功

  1. $ docker-compose version 

編寫(xiě) docker-compose.yml 配置文件

可以參考官方文檔給出的部署文檔,也可以參考我下面的配置過(guò)程。

首先新建文件 docker-compose.yml 并將下面 docker-compose 文件內(nèi)容復(fù)制進(jìn)入 docker-compose.yml,然后將內(nèi)容中注釋位置替換為自己需要的本地地址

  1. version: '3' 
  2.  
  3. services: 
  4.   mongodb: 
  5.     image: mongo:3.4.1 
  6.     volumes: 
  7.       #  /apps/easy-mock/data/db 是數(shù)據(jù)庫(kù)文件存放地址,根據(jù)需要修改為本地地址 
  8.       - '/apps/easy-mock/data/db:/data/db' 
  9.     networks: 
  10.       - easy-mock 
  11.     restart: always 
  12.  
  13.   redis: 
  14.     image: redis:4.0.6 
  15.     command: redis-server --appendonly yes 
  16.     volumes: 
  17.       #  /apps/easy-mock/data/redis 是 redis 數(shù)據(jù)文件存放地址,根據(jù)需要修改為本地地址 
  18.       - '/apps/easy-mock/data/redis:/data' 
  19.     networks: 
  20.       - easy-mock 
  21.     restart: always 
  22.  
  23.   web: 
  24.     image: easymock/easymock:1.6.0 
  25.     # easy-mock 官方給出的文件,這里是 npm start,這里修改為 npm run dev 
  26.     command: /bin/bash -c "npm run dev:server" 
  27.     ports: 
  28.       - 7300:7300  # 改為你自己期望的映射 
  29.     volumes: 
  30.       # 日志地址,根據(jù)需要修改為本地地址 
  31.       - '/apps/easy-mock/logs:/home/easy-mock/easy-mock/logs' 
  32.     networks: 
  33.       - easy-mock 
  34.     restart: always 
  35.  
  36. networks: 
  37.   easy-mock: 

啟動(dòng) Easy Mock

在 docker-compose 文件目錄下,運(yùn)行如下命令:

  1. $ docker-compose up -d 

如果遇到 easymock docker 實(shí)例報(bào)文件權(quán)限錯(cuò)誤

  1. Error: EACCES: permission denied.... 

要在項(xiàng)目根目錄執(zhí)行以下命令

  1. $ chmod 777 /yourfile/logs 

然后就可以通過(guò)瀏覽器上的 你的域名.com:7300 訪問(wèn)到 easy-mock 了!

如果你覺(jué)得域名后面跟著端口號(hào)挺難看的,你可以通過(guò)配置 Nginx 的二級(jí)域名來(lái)訪問(wèn)你部署的 easy-mock,配置二級(jí)域名的方法參見(jiàn) 這篇文章

9. 可視化管理

關(guān)于可視化查詢(xún)工具,這里就簡(jiǎn)單推介一個(gè) LazyDocker,由于是在終端運(yùn)行的,而且支持鍵盤(pán)操作和鼠標(biāo)點(diǎn)擊,就挺騷氣的,有了這個(gè)一些查詢(xún)語(yǔ)句可以少打幾次了。

lzd

安裝比較簡(jiǎn)單,運(yùn)行下面的命令:

  1. $ docker run --rm -it -v \ 
  2. /var/run/docker.sock:/var/run/docker.sock \ 
  3. -v ~/.config/lazydocker:/.config/jesseduffield/lazydocker \ 
  4. lazyteam/lazydocke 

可以設(shè)置一個(gè)終端的 alias

  1. $ alias lzd='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v ~/.config/lazydocker:/.config/jesseduffield/lazydocker lazyteam/lazydocker' 

然后你在終端輸入 lzd 就可以瀏覽你的鏡像、容器、日志、配置、狀態(tài)等等內(nèi)容了。

10. 結(jié)語(yǔ)

由于在下目前使用 Docker 的主要場(chǎng)景是 MySQL、Nginx 之類(lèi)工具的安裝,所以本文所介紹的內(nèi)容也大多屬于這個(gè)場(chǎng)景。

篇幅原因 Docker 還有一些內(nèi)容本文沒(méi)有介紹,但上面的內(nèi)容已基本滿(mǎn)足日常的使用,其他 Docker 的內(nèi)容可以關(guān)注一下在下的后續(xù)文章~

網(wǎng)上的帖子大多深淺不一,甚至有些前后矛盾,在下的文章都是學(xué)習(xí)過(guò)程中的總結(jié),如果發(fā)現(xiàn)錯(cuò)誤,歡迎留言指出~

參考文檔:

  • Empowering App Development for Developers | Docker 官方網(wǎng)站
  • Docker核心技術(shù)(基礎(chǔ)篇)
  • Docker安裝mysql
  • Docker文檔
  • Docker-compose文檔
  • 使用 docker 運(yùn)行 easy-mock - 知乎
  • docker-compose easy-mock - 簡(jiǎn)書(shū)
  • 使用 docker 運(yùn)行 easy-mock | CodingDiary
  • easymock官方docker倉(cāng)庫(kù):easy-mock/easy-mock-docker
  • 使用docker安裝nginx

 

責(zé)任編輯:武曉燕 來(lái)源: 前端下午茶
相關(guān)推薦

2022-09-06 08:40:33

應(yīng)用系統(tǒng)登錄方式Spring

2022-01-26 00:02:00

Nacos服務(wù)注冊(cè)中心

2020-10-18 17:09:14

前端開(kāi)發(fā)技術(shù)

2020-06-15 17:05:46

前端二進(jìn)制瀏覽器

2024-07-03 10:09:29

2020-09-15 10:25:13

Redis命令Java

2022-08-15 09:22:12

JWT認(rèn)證系統(tǒng)

2017-01-09 09:34:03

Docker容器傳統(tǒng)虛擬機(jī)

2021-07-19 07:01:20

Chrome 插件瀏覽器

2024-12-18 18:53:48

2022-02-13 23:00:48

前端微前端qiankun

2021-11-12 07:00:46

tsdx開(kāi)發(fā)環(huán)境

2024-12-26 09:41:00

ML.NET圖像分類(lèi)開(kāi)發(fā)者

2025-04-27 01:33:23

MongoDBDocker容器

2017-06-26 09:15:39

SQL數(shù)據(jù)庫(kù)基礎(chǔ)

2019-09-02 13:57:07

Helm Chart工具Kubernetes

2021-11-24 22:42:15

WorkManagerAPI

2021-02-18 09:06:39

數(shù)據(jù)訪問(wèn)者模式

2025-01-07 14:42:09

點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲一区二区三区桃乃木香奈 | 久久久久久91 | 一级片免费视频 | 夜夜骚视频 | 热99在线| 在线亚洲人成电影网站色www | 精品久久久久久久久久久 | 亚洲综合二区 | 播放一级黄色片 | 久久视频精品 | 日日夜夜精品免费视频 | 国产激情一区二区三区 | 女女爱爱视频 | 午夜私人影院在线观看 | 日日操视频 | 亚洲毛片网站 | 久久婷婷国产麻豆91 | 欧美性久久| 国产一区二 | 久久99网站 | 国产三级国产精品 | 亚洲国产欧美在线 | 91久久精品视频 | 欧美啊v在线观看 | 国产精品久久久久久婷婷天堂 | 国产精品久久av | 日韩精品一区二区三区在线播放 | 成人在线中文字幕 | 国产高清精品网站 | 亚洲欧美日韩网站 | 狠狠干美女 | 欧美日韩精品 | 日韩在线视频一区 | 日韩手机视频 | 日韩高清中文字幕 | 国产999精品久久久 精品三级在线观看 | 欧亚av在线| 国户精品久久久久久久久久久不卡 | 日本网站免费观看 | 天天操操 | 一区二区在线观看免费视频 |