最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker數(shù)據(jù)卷和容器編排的使用

 更新時(shí)間:2019年07月29日 08:27:38   作者:桃李報(bào)春  
這篇文章主要介紹了Docker數(shù)據(jù)卷和容器編排的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

Docker 數(shù)據(jù)卷和容器編排,記錄下來(lái)!

數(shù)據(jù)卷

數(shù)據(jù)卷可以繞過(guò)拷貝系統(tǒng),在多個(gè)容器之間、容器和宿主機(jī)之間共享目錄或文件,數(shù)據(jù)卷繞過(guò)了拷貝系統(tǒng),可以達(dá)到本地磁盤(pán)I/O性能。

運(yùn)行容器時(shí),指定一個(gè)數(shù)據(jù)卷

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

此時(shí),我們創(chuàng)建了一個(gè)數(shù)據(jù)卷并且掛載到容器的/usr/share/nginx/html/目錄下。

使用 docker inspect 命令找到數(shù)據(jù)卷映射目錄:

Docker默認(rèn)將宿主機(jī)的/var/lib/docker/volumes/1baaa58867f6e5b6bed703b0eae6ae859d39fa293ad5d85f58bf73d6101914c6/_data目錄作為source目錄,接下來(lái),進(jìn)入到該目錄中:

此時(shí)發(fā)現(xiàn)該目錄下的文件內(nèi)容與容器中/usr/share/nginx/html/目錄下的文件內(nèi)容一致,這是因?yàn)閽燧d一個(gè)空的數(shù)據(jù)卷到容器中的一個(gè)非空目錄中,這個(gè)目錄下的文件會(huì)被復(fù)制到數(shù)據(jù)卷中。

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

接下來(lái)修改數(shù)據(jù)卷中的index.html文件內(nèi)容,如下:

$ echo "hello volumes">index.html

修改完成后,再回到瀏覽器中,輸入127.0.0.1,查看nginx中index.html頁(yè)面中的數(shù)據(jù),發(fā)現(xiàn)已經(jīng)發(fā)生改變。

注意:Linux環(huán)境下輸入 curl 127.0.0.1

說(shuō)明宿主機(jī)中的文件共享到容器中去了。

宿主機(jī)目錄做數(shù)據(jù)卷

上文中對(duì)于數(shù)據(jù)卷的用法還不是最佳方案,一般來(lái)說(shuō),我們可能需要明確指定將宿主機(jī)中的一個(gè)目錄掛載到容器中,這種指定方式如下:

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

這樣便是將宿主機(jī)中的 /root/www/ 目錄掛載到容器的 /usr/share/nginx/html/ 目錄下,接下來(lái)只需要在 /root/www/ 目錄下添加、修改html文件,都能在nginx訪(fǎng)問(wèn)中立馬看到效果。這種用法對(duì)于開(kāi)發(fā)測(cè)試非常方便,不用重新部署,重啟容器等。

注意:宿主機(jī)目錄是一個(gè)絕對(duì)路徑。

數(shù)據(jù)卷其他操作

Dockerfile文件里面設(shè)置數(shù)據(jù)卷

VOLUME /usr/share/nginx/html/

這樣就配置了一個(gè)匿名數(shù)據(jù)卷,運(yùn)行過(guò)程中,將數(shù)據(jù)寫(xiě)入到/usr/share/nginx/html/目錄中,就可以實(shí)現(xiàn)容器存儲(chǔ)層的無(wú)狀態(tài)變化。

查看所有數(shù)據(jù)卷

$ docker volume ls

查看數(shù)據(jù)卷詳情

$ docker volume inspect

刪除數(shù)據(jù)卷

$ docker volume rm

注意:在使用中的數(shù)據(jù)卷,需要先將相關(guān)的容器停止并移除,才能刪除。

數(shù)據(jù)卷容器

數(shù)據(jù)卷容器是一個(gè)專(zhuān)門(mén)用來(lái)管理數(shù)據(jù)卷的容器,該容器主要是供其他容器的引用和使用。

創(chuàng)建數(shù)據(jù)卷容器

$ 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

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

容器連接

一般來(lái)說(shuō),容器啟動(dòng)后,我們都是通過(guò)端口映射來(lái)使用容器提供的服務(wù),端口映射只是使用容器服務(wù)的一種方式,除了這種方式外,還可以使用容器連接的方式來(lái)使用容器服務(wù)。

例如,有兩個(gè)容器,一個(gè)容器運(yùn)行一個(gè)SpringBoot項(xiàng)目,另一個(gè)容器運(yùn)行著mysql數(shù)據(jù)庫(kù),可以通過(guò)容器連接使 SpringBoot直接訪(fǎng)問(wèn)到Mysql數(shù)據(jù)庫(kù),而不必通過(guò)端口映射來(lái)訪(fǎng)問(wèn)mysql服務(wù)。

為了案例簡(jiǎn)單,我這里舉另外一個(gè)例子:

有兩個(gè)容器,一個(gè)nginx容器,另一個(gè)ubuntu,我啟動(dòng)nginx容器,但是并不分配端口映射,然后再啟動(dòng) ubuntu,通過(guò)容器連接,在ubuntu中訪(fǎng)問(wèn)nginx。

具體操作步驟如下:

首先啟動(dòng)一個(gè)nginx容器,但是不分配端口,命令如下:

$ docker run -d --name nginx1 nginx

容器啟動(dòng)成功后,在宿主機(jī)中是無(wú)法訪(fǎng)問(wèn)的。

啟動(dòng)ubuntu

接下來(lái),啟動(dòng)一個(gè)ubuntu,并且和nginx建立連接,如下:

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

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

運(yùn)行成功后,進(jìn)入到ubuntu容器命令行:

$ docker exec -it ubuntu bash

在ubuntu控制臺(tái)直接輸入env,查看環(huán)境變量信息:

可以看到docker為nginx創(chuàng)建了一系列環(huán)境變量。每個(gè)前綴變量是MYLINK,這就是剛剛給連接取得別名。開(kāi)發(fā)者可以使用這些環(huán)境變量來(lái)配置應(yīng)用程序連接到nginx。該連接是安全、私有的。

注意:默認(rèn)情況下,ubuntu容器中沒(méi)有安裝curl命令,需要手動(dòng)安裝下,安裝命令如下: apt-get updateapt-get install curl 。

容器編排

使用docker-compose可以實(shí)現(xiàn)容器編排。

Compose是一個(gè)用于定義和運(yùn)行多容器Docker應(yīng)用程序的工具。

在Linux系統(tǒng)上安裝Compose 下載Docker Compose二進(jìn)制文件

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

對(duì)二進(jìn)制文件應(yīng)用可執(zhí)行權(quán)限:

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

測(cè)試docker-compose是否安裝:

$ docker-compose --version

編寫(xiě)Dockerfile,內(nèi)容如下:

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

解釋?zhuān)?/p>

容器基于Tomcat創(chuàng)建。

下載jpress項(xiàng)目的war包到tomcat的webapps目錄下。

給jpress項(xiàng)目重命名。

編寫(xiě)docker-compose.yml,內(nèi)容如下:

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容器項(xiàng)目構(gòu)建上下文為.,即,將在當(dāng)前目錄下查找Dockerfile構(gòu)建web容器。
  3. container_name表示容器的名字。
  4. ports是指容器的端口映射。
  5. volumes表示配置容器的數(shù)據(jù)卷。
  6. depends_on表示該容器依賴(lài)于db容器,在啟動(dòng)時(shí),db容器將先啟動(dòng),web容器后啟動(dòng),這只是啟動(dòng)時(shí)機(jī)
  7. 的先后問(wèn)題,并不是說(shuō)web容器會(huì)等db容器完全啟動(dòng)了才會(huì)啟動(dòng)。
  8. 對(duì)于db容器,則使用image來(lái)構(gòu)建,沒(méi)有使用Dockerfile。
  9. restart描述了容器的重啟策略。
  10. environment則是啟動(dòng)容器時(shí)的環(huán)境變量,這里配置了數(shù)據(jù)庫(kù)root用戶(hù)的密碼以及在啟動(dòng)時(shí)創(chuàng)建一個(gè)名為
  11. jpress的庫(kù),environment的配置可以使用字典和數(shù)組兩種形式。

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

運(yùn)行:

$ docker-compose up -d

瀏覽器輸入http://localhost:8080/jpress,就可以看到j(luò)press的配置頁(yè)面。

常用命令

# 停止容器運(yùn)行
$ docker-compose stop

# 啟動(dòng)容器
$ docker-compose start

# 重啟容器
$ docker-compose restart

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 從零搭建docker私有倉(cāng)庫(kù)的步驟

    從零搭建docker私有倉(cāng)庫(kù)的步驟

    這篇文章主要介紹了從零搭建docker私有倉(cāng)庫(kù)的步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • docker容器重啟錯(cuò)誤的解決方案

    docker容器重啟錯(cuò)誤的解決方案

    本文主要介紹了docker容器重啟錯(cuò)誤的解決方案,詳細(xì)的介紹了docker 重啟錯(cuò)誤的原因及其解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • 基于Docker+Jenkins實(shí)現(xiàn)自動(dòng)化部署的方法

    基于Docker+Jenkins實(shí)現(xiàn)自動(dòng)化部署的方法

    這篇文章主要介紹了基于Docker+Jenkins實(shí)現(xiàn)自動(dòng)化部署,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 解決docker報(bào)錯(cuò):docker:invalid?reference?format.

    解決docker報(bào)錯(cuò):docker:invalid?reference?format.

    在導(dǎo)入鏡像的時(shí)候出現(xiàn)問(wèn)題:invalid reference format,這里總結(jié)下,這篇文章主要給大家介紹了關(guān)于解決docker報(bào)錯(cuò):docker:invalid?reference?format的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Docker容器的創(chuàng)建、啟動(dòng)、和停止的方法

    Docker容器的創(chuàng)建、啟動(dòng)、和停止的方法

    這篇文章主要介紹了Docker容器的創(chuàng)建、啟動(dòng)、和停止的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過(guò)程圖解

    Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過(guò)程圖解

    這篇文章主要介紹了Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Docker進(jìn)階之構(gòu)建自定義鏡像實(shí)戰(zhàn)指南

    Docker進(jìn)階之構(gòu)建自定義鏡像實(shí)戰(zhàn)指南

    從docker鏡像倉(cāng)庫(kù)中下載的鏡像不能滿(mǎn)足我們的需求時(shí),可以對(duì)鏡像進(jìn)行更改,下面這篇文章主要給大家介紹了關(guān)于Docker進(jìn)階之構(gòu)建自定義鏡像實(shí)戰(zhàn)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 詳解Docker方式實(shí)現(xiàn)MySql 主從復(fù)制(實(shí)踐篇)

    詳解Docker方式實(shí)現(xiàn)MySql 主從復(fù)制(實(shí)踐篇)

    本篇文章主要介紹了詳解Docker方式實(shí)現(xiàn)MySql 主從復(fù)制(實(shí)踐篇),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 在CentOS 7上安裝和使用Docker的方法步驟

    在CentOS 7上安裝和使用Docker的方法步驟

    Docker 是一個(gè)應(yīng)用程序,它簡(jiǎn)化了在容器中運(yùn)行應(yīng)用程序進(jìn)程的過(guò)程,這些容器類(lèi)似于虛擬機(jī),但更加便攜、資源友好,并且更依賴(lài)于主機(jī)操作系統(tǒng),在本教程中,你將學(xué)習(xí)如何在現(xiàn)有的 CentOS 7 安裝上安裝并使用 Docker,需要的朋友可以參考下
    2024-07-07
  • CentOS 7 sshd 鏈接被拒絕問(wèn)題解決辦法

    CentOS 7 sshd 鏈接被拒絕問(wèn)題解決辦法

    這篇文章主要介紹了CentOS 7 sshd 鏈接被拒絕問(wèn)題解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評(píng)論

乐安县| 绥江县| 娄底市| 赫章县| 昌江| 阜城县| 武邑县| 余姚市| 凉城县| 山西省| 富锦市| 博乐市| 苏尼特左旗| 峨边| 神农架林区| 承德市| 兴安盟| 呼和浩特市| 弋阳县| 福清市| 平顺县| 邛崃市| 武乡县| 隆昌县| 原阳县| 临汾市| 上饶市| 贵南县| 称多县| 丽水市| 黄龙县| 宁陕县| 隆回县| 安顺市| 鄂伦春自治旗| 和政县| 弋阳县| 沈阳市| 泸州市| 扬中市| 通化县|