婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Docker數據卷和容器編排的使用

Docker數據卷和容器編排的使用

熱門標簽:蕪湖呼叫中心外呼系統哪家強 漯河電銷外呼系統價格 征服者快捷酒店地圖標注 天津外呼系統運營商 貴港市機器人外呼系統團隊 電銷機器人怎么錄音 咸陽穩定外呼系統公司 貴陽語音電銷機器人 ec外呼系統怎么樣

前言

Docker 數據卷和容器編排,記錄下來!

數據卷

數據卷可以繞過拷貝系統,在多個容器之間、容器和宿主機之間共享目錄或文件,數據卷繞過了拷貝系統,可以達到本地磁盤I/O性能。

運行容器時,指定一個數據卷

$ docker run -itd --name nginx -v /usr/share/nginx/html/ -p 80:80 e445ab08b2be

此時,我們創建了一個數據卷并且掛載到容器的/usr/share/nginx/html/目錄下。

使用 docker inspect 命令找到數據卷映射目錄:

Docker默認將宿主機的/var/lib/docker/volumes/1baaa58867f6e5b6bed703b0eae6ae859d39fa293ad5d85f58bf73d6101914c6/_data目錄作為source目錄,接下來,進入到該目錄中:

此時發現該目錄下的文件內容與容器中/usr/share/nginx/html/目錄下的文件內容一致,這是因為掛載一個空的數據卷到容器中的一個非空目錄中,這個目錄下的文件會被復制到數據卷中。

注意:由于Mac中的Docker有點特殊,上文提到的/var/lib/xxxx目錄,如果是在Linux環境下,則直接進入即可, 如果是在mac中,需要首先執行如下命令,在新進入的命令行中進入到/var/lib/xxx目錄下: screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

接下來修改數據卷中的index.html文件內容,如下:

$ echo "hello volumes">index.html

修改完成后,再回到瀏覽器中,輸入127.0.0.1,查看nginx中index.html頁面中的數據,發現已經發生改變。

注意:Linux環境下輸入 curl 127.0.0.1

說明宿主機中的文件共享到容器中去了。

宿主機目錄做數據卷

上文中對于數據卷的用法還不是最佳方案,一般來說,我們可能需要明確指定將宿主機中的一個目錄掛載到容器中,這種指定方式如下:

$ docker run -itd --name nginx2 -v /root/www/:/usr/share/nginx/html/ -p 8889:80 98ebf73aba75

這樣便是將宿主機中的 /root/www/ 目錄掛載到容器的 /usr/share/nginx/html/ 目錄下,接下來只需要在 /root/www/ 目錄下添加、修改html文件,都能在nginx訪問中立馬看到效果。這種用法對于開發測試非常方便,不用重新部署,重啟容器等。

注意:宿主機目錄是一個絕對路徑。

數據卷其他操作

Dockerfile文件里面設置數據卷

VOLUME /usr/share/nginx/html/

這樣就配置了一個匿名數據卷,運行過程中,將數據寫入到/usr/share/nginx/html/目錄中,就可以實現容器存儲層的無狀態變化。

查看所有數據卷

$ docker volume ls

查看數據卷詳情

$ docker volume inspect

刪除數據卷

$ docker volume rm

注意:在使用中的數據卷,需要先將相關的容器停止并移除,才能刪除。

數據卷容器

數據卷容器是一個專門用來管理數據卷的容器,該容器主要是供其他容器的引用和使用。

創建數據卷容器

$ docker run -itd -v /usr/share/nginx/html/ --name mydata ubuntu

引用容器

$ docker run -itd --volumes-from mydata 80:80 --name nginx1 nginx
$ docker run -itd --volumes-from mydata 81:80 --name nginx2 nginx

此時,nginx1和nginx2都掛載了同一個數據卷到/usr/share/nginx/html/目錄下,三個容器中,任意一個修改了該目錄下的文件,其他兩個都能看到變化。

容器連接

一般來說,容器啟動后,我們都是通過端口映射來使用容器提供的服務,端口映射只是使用容器服務的一種方式,除了這種方式外,還可以使用容器連接的方式來使用容器服務。

例如,有兩個容器,一個容器運行一個SpringBoot項目,另一個容器運行著mysql數據庫,可以通過容器連接使 SpringBoot直接訪問到Mysql數據庫,而不必通過端口映射來訪問mysql服務。

為了案例簡單,我這里舉另外一個例子:

有兩個容器,一個nginx容器,另一個ubuntu,我啟動nginx容器,但是并不分配端口映射,然后再啟動 ubuntu,通過容器連接,在ubuntu中訪問nginx。

具體操作步驟如下:

首先啟動一個nginx容器,但是不分配端口,命令如下:

$ docker run -d --name nginx1 nginx

容器啟動成功后,在宿主機中是無法訪問的。

啟動ubuntu

接下來,啟動一個ubuntu,并且和nginx建立連接,如下:

$ docker run -dit --name ubuntu --link nginx1:mylink ubuntu bash

這里使用--link建立連接,nginx1是要建立連接的容器,后面的mylink則是連接的別名。

運行成功后,進入到ubuntu容器命令行:

$ docker exec -it ubuntu bash

在ubuntu控制臺直接輸入env,查看環境變量信息:

可以看到docker為nginx創建了一系列環境變量。每個前綴變量是MYLINK,這就是剛剛給連接取得別名。開發者可以使用這些環境變量來配置應用程序連接到nginx。該連接是安全、私有的。

注意:默認情況下,ubuntu容器中沒有安裝curl命令,需要手動安裝下,安裝命令如下: apt-get updateapt-get install curl

容器編排

使用docker-compose可以實現容器編排。

Compose是一個用于定義和運行多容器Docker應用程序的工具。

在Linux系統上安裝Compose 下載Docker Compose二進制文件

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

對二進制文件應用可執行權限:

sudo chmod +x /usr/local/bin/docker-compose

測試docker-compose是否安裝:

$ docker-compose --version

編寫Dockerfile,內容如下:

FROM tomcat
ADD https://github.com/JpressProjects/jpress/raw/alpha/wars/jpress-web-newest.war /usr/local/tomcat/webapps/
RUN cd /usr/local/tomcat/webapps/ \

 && mv jpress-web-newest.war jpress.war

解釋:

容器基于Tomcat創建。

下載jpress項目的war包到tomcat的webapps目錄下。

給jpress項目重命名。

編寫docker-compose.yml,內容如下:

version: '3.1'
services:
 web:
 build: .
 container_name: jpress
 ports:
 - '8080:8080'
 volumes:
 - /usr/local/tomcat/
 depends_on:
 - db
 db:
 image: mysql
 container_name: mysql
 command: --default-authentication-plugin=mysql_native_password
 restart: always
 ports:
 - '3306:3306'
 environment:
 MYSQL_ROOT_PASSWORD: root
 MYSQL_DATABASE: jpress
  1. 首先聲明了web容器,然后聲明db容器。
  2. build .表示web容器項目構建上下文為.,即,將在當前目錄下查找Dockerfile構建web容器。
  3. container_name表示容器的名字。
  4. ports是指容器的端口映射。
  5. volumes表示配置容器的數據卷。
  6. depends_on表示該容器依賴于db容器,在啟動時,db容器將先啟動,web容器后啟動,這只是啟動時機
  7. 的先后問題,并不是說web容器會等db容器完全啟動了才會啟動。
  8. 對于db容器,則使用image來構建,沒有使用Dockerfile。
  9. restart描述了容器的重啟策略。
  10. environment則是啟動容器時的環境變量,這里配置了數據庫root用戶的密碼以及在啟動時創建一個名為
  11. jpress的庫,environment的配置可以使用字典和數組兩種形式。

注意:docker-compose.yml文件里面不能有多余的空格!否則會運行不成功。

運行:

$ docker-compose up -d

瀏覽器輸入http://localhost:8080/jpress,就可以看到jpress的配置頁面。

常用命令

# 停止容器運行
$ docker-compose stop

# 啟動容器
$ docker-compose start

# 重啟容器
$ docker-compose restart

注意:需在docker-compose.yml和Dockerfile所在目錄下執行以上命令。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:濰坊 淮北 香港 怒江 西寧 西藏 攀枝花 東營

巨人網絡通訊聲明:本文標題《Docker數據卷和容器編排的使用》,本文關鍵詞  Docker,數據,卷,和,容器,編排,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Docker數據卷和容器編排的使用》相關的同類信息!
  • 本頁收集關于Docker數據卷和容器編排的使用的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 西平县| 泸溪县| 朔州市| 瑞金市| 凯里市| 高要市| 株洲市| 资源县| 桂林市| 新田县| 乌鲁木齐市| 吉安市| 个旧市| 闽侯县| 永川市| 灵武市| 诏安县| 广丰县| 汶川县| 旅游| 营山县| 班戈县| 雅安市| 黄平县| 石狮市| 廊坊市| 宁乡县| 山西省| 望谟县| 和硕县| 东兴市| 铁岭市| 得荣县| 红桥区| 珲春市| 长垣县| 绍兴市| 铁岭市| 金昌市| 宽城| 嘉鱼县|