一小時輕鬆高階Docker深度操作

2021-10-07 21:53:18 字數 4769 閱讀 1285

能看到這裡說明你已經在之前 掌握了docker的基本操作,接下來和我一起領略一下docker更大的魅力吧!

為了部署ssm的工程,需要使用到cp的命令將宿主機內的ssm.war檔案複製到容器內部。

資料卷:將宿主機的乙個目錄對映到容器的乙個目錄中。

可以在宿主機中操作目錄中的內容,那麼容器內部對映的檔案,也會跟著一起改變。

8.1 建立資料卷
建立資料卷之後,缺省會存放在乙個目錄下 /var/lib/docker/volumes/資料卷名稱/_data

docker volume create 資料卷名稱
8.2 檢視資料卷詳情
檢視資料卷的詳細資訊,可以查詢到存放路徑,建立時間等等

docker volume inspect 資料卷名稱
8.3 檢視全部資料卷
檢視全部資料卷資訊

docker volume ls
8.4 刪除資料卷
刪除指定資料卷

docker volume rm 資料卷名稱
8.5 容器對映資料卷
對映有兩種方式:

# 通過資料卷名稱對映  (需要先建立乙個資料卷)

docker run -v 資料卷名稱:容器內部的路徑 映象id

# 通過路徑對映資料卷 (推薦使用,因為可以自定義路徑,方便管理)

docker run -v 路徑:容器內部的路徑 映象id

簡單來講,就是在乙個依賴的映象上,新增一些我們自己需要的環境或者軟體,從而封裝成乙個屬於我們自己的映象 !那麼我們應該如何實現呢?

9.1 dockerfile

from: 指定當前自定義映象依賴的環境

copy: 將相對路徑下的內容複製到自定義映象中

workdir: 宣告映象的預設工作目錄

run: 執行的命令,可以編寫多個

cmd: 需要執行的命令(在workdir下執行的,cmd可以寫多個,只以最後乙個為準)

# 舉個例子,製作ssm容器映象,而且ssm.war要放在dockerfile的同級目錄下

from daocloud.io/library/tomcat:8.5.15-jre8

9.2 通過dockerfile製作映象
編寫完dockerfile後需要通過命令將其製作為映象,並且要在dockerfile的當前目錄下,之後即可在映象中檢視到指定的映象資訊,注意最後的 .

docker build -t 映象名稱[:tag] .
之前執行乙個映象,需要新增大量的引數,可以通過docker-compose編寫這些引數。而且docker-compose可以幫助我們批量的管理容器。這些資訊只需要通過乙個docker-compose.yml檔案去維護即可。

10.1.2 設定許可權

需要將dockercompose檔案的名稱修改一下,給予dockercompose檔案乙個可執行的許可權

mv docker-compose-linux-x86_64 docker-compose

chmod 777 docker-compose

10.1.3 配置環境變數
方便後期操作,配置乙個環境變數

將docker-compose檔案移動到了/usr/local/bin , 修改了/etc/profile檔案,給/usr/local/bin配置到了path中

mv docker-compose /usr/local/bin
10.1.4 測試
在任意目錄下輸入docker-compose

10.2 docker-compose管理mysql和tomcat容器
yml檔案以key: value方式來指定配置資訊

多個配置資訊以換行+縮排的方式來區分

在docker-compose.yml檔案中,不要使用製表符

version

:'3.1'

services

:mysql

:# 服務的名稱

restart

: always # 代表只要docker啟動,那麼這個容器就跟著一起啟動

image

: daocloud.io/library/mysql:5.7.4 # 指定映象路徑

container_name

: mysql # 指定容器名稱

ports

:- 3306:

3306

# 指定埠號的對映

environment

:mysql_root_password

: root # 指定mysql的root使用者登入密碼

tz: asia/shanghai # 指定時區

volumes

:- /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql # 對映資料卷

tomcat

:restart

: always

image

: daocloud.io/library/tomcat:8.5.15-jre8

container_name

: tomcat

ports

:- 8080:

8080

environment:tz

: asia/shanghai

volumes

: - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs

10.3 使用docker-compose命令管理容器
在使用docker-compose的命令時 ,缺省會在當前目錄下找docker-compose.yml檔案

# 1. 基於docker-compose.yml啟動管理的容器

docker-compose up -d

# 2. 關閉並刪除容器

docker-compose down

# 3. 開啟|關閉|重啟已經存在的由docker-compose維護的容器

docker-compose start|stop|restart

# 4. 檢視由docker-compose管理的容器

docker-compose ps

# 5. 檢視日誌

docker-compose logs -f

10.4 docker-compose配合dockerfile使用
使用docker-compose.yml檔案以及dockerfile檔案在生成自定義映象的同時啟動當前映象,並且由docker-compose去管理容器

10.4.1 docker-compose檔案
編寫docker-compose.yml檔案

# yml檔案

version

:'3.1'

services

:ssm

:restart

: always

build

:# 構建自定義映象

context

: ../ # 指定dockerfile檔案的所在路徑

dockerfile

: dockerfile # 指定dockerfile檔名稱

image

: ssm:1.0.1

container_name

: ssm

ports

:- 8081:

8080

environment:tz

: asia/shanghai

10.4.2 dockerfile檔案
編寫dockerfile檔案

from daocloud.io/library/tomcat:8.5.15-jre8
10.4.3 執行
測試效果

# 可以直接啟動基於docker-compose.yml以及dockerfile檔案構建的自定義映象

docker-compose up -d

# 如果自定義映象不存在,會幫助我們構建出自定義映象,如果自定義映象已經存在,會直接執行這個自定義映象

# 重新構建的話。

# 重新構建自定義映象

docker-compose build

# 執行當前內容,並重新構建

docker-compose up -d --build

能學到這裡,並成功執行這些例子,你就已經很棒了!!!

下面關於ci和cd的操作可能對於初學者有些困難,為此我把這些內容專門拿出來另寫一篇部落格,對此感興趣的可以仔細研究,一起**!!!

人生一小時

桌面,侵刪 今天不小心開啟部落格,發現乙個有意思的事情,我已經大半年沒有寫過部落格了!現在看看我之前寫的習慣清單 堅持寫部落格,真是汗顏啊。這半年來工作也不是很忙,平常也不知道幹些啥,日子一天天就過去了,感覺時間真的在變快啊,不知道大家是不是也是跟我一樣的感覺,這難道就是生活 生下來,活下去 看看鏡...

openMP一小時初探

參考 通過 gcc 學習 openmp 框架 詳細,我只看到臨界區之前 openmp基本概念 全看,內含並行化控制的三種程式設計要素 編譯制導 api函式集和環境變數 openmp入門教程 一 也講了fork join執行模型 執行緒概念 資料作用域.我主要跟著第一篇教程看了部分內容,後面兩篇當作補...

如何一小時學會字尾陣列,一小時學會字尾自動機?

前言 反正因為一些tuosh事情,我必須得兩小時學會它們。我服了。後期可能會再學,但是這個標題不準備更改了。來吧!參考資料 hihocoder 例題 1.suffix 把乙個字串後面加上乙個符號 將其所有字尾取出來,其中suffix i 表示從第i個字元開始的字尾。2.sa 字尾陣列 把suffix...