Docker應(yīng)用容器
1. 初識 Docker
我們寫的代碼會接觸到好幾個(gè)環(huán)境:開發(fā)環(huán)境、測試環(huán)境以及生產(chǎn)環(huán)境。
這期間可能出現(xiàn)不同環(huán)境下的 “水土不服” 導(dǎo)致正常的程序無法運(yùn)行。這時(shí)就需要將我們的環(huán)境一起打包到容器發(fā)過去。解決:軟件跨環(huán)境遷移的問題。

1.1 - Docker的概念
Docker是一個(gè)開源的應(yīng)用容器引擎。Docker誕生于2013年, dotCloud 公司出品(后改名為Docker Inc)。
Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上。 - 容器是完全使用沙箱機(jī)制,相互隔離。 - 容器性能開銷極低。
Docker 從 17.03 版本之后分為 CE(Community Edition: 社區(qū)版) 和 EE(Enterprise Edition: 企業(yè)版) 。
1.2 安裝Docker
# 1、yum 包更新到最新
yum update
# 2、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個(gè)是devicemapper驅(qū)動(dòng)依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 設(shè)置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安裝docker,出現(xiàn)輸入的界面都按 y
yum install -y docker-ce
# 5、 查看docker版本,驗(yàn)證是否驗(yàn)證成功
docker -v
1.3 Docker 的架構(gòu)

鏡像(Image) :Docker 鏡像(Image),就相當(dāng)于是一個(gè) root 文件系統(tǒng)。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統(tǒng)的 root 文件系統(tǒng)。
容器(Container):鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計(jì)中的類和對象一樣,鏡像是靜態(tài)的定義,容器是鏡像運(yùn)行時(shí)的實(shí)體。容器可以被創(chuàng)建、啟動(dòng)、停止、刪除、暫停等。
倉庫(Repository) :倉庫可看成一個(gè)代碼控制中心,用來保存鏡像。
1.4 配置 Docker 鏡像加速器
- 默認(rèn)情況下,將來從docker hub(https://hub.docker.com/)上下載docker鏡像,太慢。一般都會配置鏡像加速器:
(1)USTC:中科大鏡像加速器(https://docker.mirrors.ustc.edu.cn)
(2)阿里云
(3)網(wǎng)易云
(4)騰訊云
- 如何在CentOS7 中配置 Docker鏡像加速器
切換到 docker目錄下 :cd /etc/docker
創(chuàng)建并編輯文件 : vim daemon.json
編輯文件內(nèi)容:
{
"registry-mirrors": ["https://ndirti7e.mirror.aliyuncs.com"]
}
重啟docker服務(wù) : systemctl restart docker
附加命令 (linux修改文件后綴):mv filename.js filename.json (因?yàn)槲业暮缶Y寫錯(cuò)了一直沒有反應(yīng),hahaha)
2. Docker 命令 *
2.1 Docker 服務(wù)相關(guān)命令
systemctl start docker : 啟動(dòng)服務(wù)
systemctl start docker : 查看Docker的狀態(tài)
systemctl stop docker : 停止Docker服務(wù)
systemctl restart docker : 重啟Docker服務(wù)
systemctl enable docker : 開機(jī)啟動(dòng)Docker
2.2 Docker 鏡像相關(guān)命令
1. 查看鏡像(本地):docker images
2. 搜索鏡像:docker search '軟件名稱'
3. 拉取鏡像:docker pusll redis :版本號
4. 刪除鏡像(本地):docker rmi 鏡像id
5. 查看當(dāng)前所有鏡像的id: docker images -q
6. 刪除當(dāng)前所有鏡像: docker rmi `docker images -q`
- 如何查找鏡像的版本號 :https://hub.docker.com/
- 如果鏡像中存在兩個(gè)id相同的鏡像:如何刪除?
1. 可以通過 鏡像名稱加上版本號 刪除 docker rmi redis:5.0
2.3 Docker 容器相關(guān)命令 **
- 容器是有鏡像這個(gè)物理的文件運(yùn)行出來的實(shí)例。命令主要是如何通過鏡像創(chuàng)建出容器。并且去操作容器。
1. 查看容器:docker ps (查看正在運(yùn)行的容器)docker ps -a(查看運(yùn)行或沒有運(yùn)行的容器)
2. 創(chuàng)建容器:docker run -i(保持一致運(yùn)行) -t (給容器一個(gè)終端)--name=名字(給容器起一個(gè)名字) centos:7 (指定根據(jù)哪個(gè)鏡像) /bin/bash (進(jìn)入容器的指令)
案例 docker run -i -t --name=cl centos:7 /bin/bash (通過這種方式創(chuàng)建的容器一旦退出就會關(guān)閉) 使用 exit 退出容器
docker run -i -d(后臺運(yùn)行容器,但是創(chuàng)建完之后不會自動(dòng)進(jìn)入容器) --name=ct centos:7
3. 進(jìn)入容器: docker exec -it 容器名稱 /bin/bash
4. 啟動(dòng)容器:docker stop 容器名稱
5. 停止容器:docker start 容器名稱
6. 刪除容器:docker rm 容器id/容器名稱 刪除所有容器 docker rm `docker ps -aq` 開啟的容器是不能被刪除的。
7. 查看容器信息:docker inspect 容器名稱

3. Docker的應(yīng)用部署
- 在Docker上安裝常見的軟件。
3.1 MySQL部署
- 在Docker容器中部署MySQL,并通過外部mysql客戶端操作MySQL Server。
- 外部如何訪問到docker容器中的mysql服務(wù)?容器內(nèi)的網(wǎng)絡(luò)服務(wù)不能直接和外部直接通信。
- 外部機(jī)器和宿主機(jī)可以直接通信。
- 宿主機(jī)和容器可以直接通信。
- 當(dāng)容器中的網(wǎng)絡(luò)服務(wù)需要外部機(jī)器訪問時(shí),可以將容器中提供服務(wù)的端口映射到宿主機(jī)的端口上。外部機(jī)器訪問宿主機(jī)的該端口,從而直接訪問容器的服務(wù)。
3.1.1 實(shí)現(xiàn)步驟
- 搜索mysql鏡像。
docker search mysql
- 拉取mysql鏡像。
docker pull mysql:5.6
- 創(chuàng)建容器。
- 首先創(chuàng)建一個(gè)存放mysql數(shù)據(jù)的文件,并切換進(jìn)去
# 在/root目錄下創(chuàng)建mysql目錄用于存儲mysql數(shù)據(jù)信息
mkdir ~/mysql
cd ~/mysql
# 復(fù)制下面命令到終端執(zhí)行 ,注意 \ 后面不能有空格之類的影響命令的執(zhí)行
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
# 使用命令 進(jìn)入到容器中 docker exec -it c_mysql /bin/bash
參數(shù)說明:
- -p 3307:3306:將容器的 3306 端口映射到宿主機(jī)的 3307 端口。
- -v $PWD/conf:/etc/mysql/conf.d:將主機(jī)當(dāng)前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。配置目錄
- -v $PWD/logs:/logs:將主機(jī)當(dāng)前目錄下的 logs 目錄掛載到容器的 /logs。日志目錄
- -v $PWD/data:/var/lib/mysql :將主機(jī)當(dāng)前目錄下的data目錄掛載到容器的 /var/lib/mysql 。數(shù)據(jù)目錄
- -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。
-
操作容器中的mysql。
連接到docker容器中的mysql
3.2 Tomcat部署
- 需求:在Docker容器中部署Tomcat,并通過外部機(jī)器訪問Tomcat部署的項(xiàng)目。
3.2.1 實(shí)現(xiàn)步驟
- 搜索Tomcat鏡像
docker search tomcat
- 拉取Tomcat鏡像
docker pull tomcat
- 創(chuàng)建容器
# 在/root目錄下創(chuàng)建tomcat目錄用于存儲tomcat數(shù)據(jù)信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
參數(shù)說明:
- -p 8080:8080:將容器的8080端口映射到主機(jī)的8080端口
- -v $PWD:/usr/local/tomcat/webapps:將主機(jī)中當(dāng)前目錄掛載到容器的webapps
- 部署項(xiàng)目
- 在宿主機(jī)之前創(chuàng)建的tomcat目錄下新建一個(gè)項(xiàng)目文件夾 test
mkdir test
- 在test文件夾中創(chuàng)建一個(gè) index.html文件
vim index.html
- 測試訪問
-
使用遠(yuǎn)程主機(jī)IP進(jìn)行訪問。
訪問遠(yuǎn)程docker容器中的tomcat應(yīng)用成功
3.3 Nginx部署
- 在Docker容器中部署Nginx,并通過外部機(jī)器訪問Nginx。
3.3.1 實(shí)現(xiàn)步驟
- 搜索Nginx
docker search nginx
- 拉取Nginx,并編寫配置文件
docker pull nginx
# 在/root目錄下創(chuàng)建nginx目錄用于存儲nginx數(shù)據(jù)信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下創(chuàng)建nginx.conf文件,粘貼下面內(nèi)容
vim nginx.conf
# nginx.conf 配置文件內(nèi)容
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
- 創(chuàng)建容器
# 切換到Nginx目錄下執(zhí)行如下命令創(chuàng)建Nginx的容器。
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
參數(shù)說明:
- -p 80:80:將容器的 80端口映射到宿主機(jī)的 80 端口。
- -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:將主機(jī)當(dāng)前目錄下的 /conf/nginx.conf 掛載到容器的 :/etc/nginx/nginx.conf。配置目錄
- -v $PWD/logs:/var/log/nginx:將主機(jī)當(dāng)前目錄下的 logs 目錄掛載到容器的/var/log/nginx。日志目錄
- 測試訪問
切換到html 文件夾下創(chuàng)建一個(gè)index.html文件之后進(jìn)行訪問測試。

3.4 Redis部署
- 在Docker容器中部署Redis,并通過外部機(jī)器訪問 Redis。
3.4.1 實(shí)現(xiàn)步驟
- 搜索Redis鏡像。
docker search redis
- 拉取Redis鏡像。
docker pull redis:5.0
- 創(chuàng)建容器。
docker run -id --name=c_redis -p 6379:6379 redis:5.0 //注意端口可能被綁定了,需要替換端口
- 測試訪問。
redis-cli.exe -h 192.168.149.135 -p 6379
4. 備份與遷移
5. Dockerfile
5.1 Dockerfile的原理
linux文件系統(tǒng)由bootfs和rootfs兩部分組成。
bootfs:包含bootloader(引導(dǎo)加載程序)和kernelkernel(內(nèi)核)。
rootfs:root文件系統(tǒng),包含的就是典型linux系統(tǒng)中的/devproc,/bin、 /etc等標(biāo)準(zhǔn)目錄和文件
不同的linux發(fā)行版,bootfs基本是一樣的,而rootfs不同,如ubuntu、centos等。
Docker鏡像是由特殊的文件系統(tǒng)疊加而成
最底端是 bootfs,并使用宿主機(jī)的bootfs
第二層是 root文件系統(tǒng)rootfs,稱為base image
然后再往上可以疊加其他的鏡像文件
統(tǒng)一文件系統(tǒng)(Union File System) 技術(shù)能夠?qū)⒉煌膶诱铣梢粋€(gè)文件系統(tǒng),為這些層提供了一個(gè)。
統(tǒng)一的視角,這樣就隱藏了多層的存在,在用戶的角度看來,只存在一個(gè)文件系統(tǒng)。
一個(gè)鏡像可以放在另一個(gè)鏡像的上面。位于下面的鏡像稱為父鏡像,最底部的鏡像成為基礎(chǔ)鏡像。
當(dāng)從一個(gè)鏡像啟動(dòng)容器時(shí),Docker會在最頂層加載一個(gè)讀寫文件系統(tǒng)作為容器

5.2 Dockerfile概念及作用
- Docker的本質(zhì)是啥?
- 答:是一個(gè)分層文件系統(tǒng)
- Docker中一個(gè)centos鏡像為什么只有200MB,而是一個(gè)centos操作系統(tǒng)的iso文件要幾個(gè)G?
- 答:Centos的iso鏡像文件包含bootfs和rootfs,而docker的centos鏡像復(fù)用操作系統(tǒng)的bootfs,只有rootfs和其他鏡像層
- Docker中一個(gè)tomcat鏡像為什么有500mb而一個(gè)tomcat的 安裝包只有70多mb?
- 答:Centos的iso鏡像文件包含bootfs和rootfs,而docker的centos鏡像復(fù)用操作系統(tǒng)的bootfs,只有rootfs和其他鏡像
5.2.1 鏡像制作
5.2.1.1 容器轉(zhuǎn)為鏡像的方式
docker commit 容器id 鏡像名稱:自定義版本號
通過commit的方式轉(zhuǎn)化,以數(shù)據(jù)卷的方式掛載的文件是不會生效的。在root目錄下創(chuàng)建的文件夾會打包到鏡像中。會在重新加載的時(shí)候生效。
# 1. 打包一個(gè)鏡像
docker commit 需要打包的容器id lyp_tomcat:1.0.0
# 2. 需要將鏡像鏡像壓縮之后才能夠進(jìn)行傳輸
docker save -o 壓縮文件名稱.tar 鏡像文件名稱:1.0.0
3. 將鏡像的壓縮文件進(jìn)行解壓
docker load -i 壓縮文件名稱
5.2.1.2 Dockerfile的方式制作鏡像
5.2.2 DockerFile的概念
- Dockerfile 是一個(gè)文本文件
- 包含了一條條的指令
- 每一條指令構(gòu)建一層,基于基礎(chǔ)鏡像,最終構(gòu)建出一個(gè)新的鏡像
- 對于開發(fā)人員:可以為開發(fā)團(tuán)隊(duì)提供一個(gè)完全一致的開發(fā)環(huán)境
- 對于測試人員:可以直接拿開發(fā)時(shí)所構(gòu)建的鏡像或者通過Dockerfile文件構(gòu)建一個(gè)新的鏡像開始工作了
-
對于運(yùn)維人員:在部署時(shí),可以實(shí)現(xiàn)應(yīng)用的無縫移植
dockerfile的概念
- Dochub網(wǎng)址:https://hub.docker.com
5.3 Dockerfile關(guān)鍵字
| 關(guān)鍵字 | 作用 | 備注 |
|---|---|---|
| FROM | 指定父鏡像 | 指定dockerfile基于那個(gè)image構(gòu)建 |
| MAINTAINER | 作者信息 | 用來標(biāo)明這個(gè)dockerfile誰寫的 |
| LABEL | 標(biāo)簽 | 用來標(biāo)明dockerfile的標(biāo)簽 可以使用Label代替Maintainer 最終都是在docker image基本信息中可以查看 |
| RUN | 執(zhí)行命令 | 執(zhí)行一段命令 默認(rèn)是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"] |
| CMD | 容器啟動(dòng)命令 | 提供啟動(dòng)容器時(shí)候的默認(rèn)命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"] |
| ENTRYPOINT | 入口 | 一般在制作一些執(zhí)行就關(guān)閉的容器中會使用 |
| COPY | 復(fù)制文件 | build的時(shí)候復(fù)制文件到image中 |
| ADD | 添加文件 | build的時(shí)候添加文件到image中 不僅僅局限于當(dāng)前build上下文 可以來源于遠(yuǎn)程服務(wù) |
| ENV | 環(huán)境變量 | 指定build時(shí)候的環(huán)境變量 可以在啟動(dòng)的容器的時(shí)候 通過-e覆蓋 格式ENV name=value |
| ARG | 構(gòu)建參數(shù) | 構(gòu)建參數(shù) 只在構(gòu)建的時(shí)候使用的參數(shù) 如果有ENV 那么ENV的相同名字的值始終覆蓋arg的參數(shù) |
| VOLUME | 定義外部可以掛載的數(shù)據(jù)卷 | 指定build的image那些目錄可以啟動(dòng)的時(shí)候掛載到文件系統(tǒng)中 啟動(dòng)容器的時(shí)候使用 -v 綁定 格式 VOLUME ["目錄"] |
| EXPOSE | 暴露端口 | 定義容器運(yùn)行的時(shí)候監(jiān)聽的端口 啟動(dòng)容器的使用-p來綁定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp |
| WORKDIR | 工作目錄 | 指定容器內(nèi)部的工作目錄 如果沒有創(chuàng)建則自動(dòng)創(chuàng)建 如果指定/ 使用的是絕對地址 如果不是/開頭那么是在上一條workdir的路徑的相對路徑 |
| USER | 指定執(zhí)行用戶 | 指定build或者啟動(dòng)的時(shí)候 用戶 在RUN CMD ENTRYPONT執(zhí)行的時(shí)候的用戶 |
| HEALTHCHECK | 健康檢查 | 指定監(jiān)測當(dāng)前容器的健康監(jiān)測的命令 基本上沒用 因?yàn)楹芏鄷r(shí)候 應(yīng)用本身有健康監(jiān)測機(jī)制 |
| ONBUILD | 觸發(fā)器 | 當(dāng)存在ONBUILD關(guān)鍵字的鏡像作為基礎(chǔ)鏡像的時(shí)候 當(dāng)執(zhí)行FROM完成之后 會執(zhí)行 ONBUILD的命令 但是不影響當(dāng)前鏡像 用處也不怎么大 |
| STOPSIGNAL | 發(fā)送信號量到宿主機(jī) | 該STOPSIGNAL指令設(shè)置將發(fā)送到容器的系統(tǒng)調(diào)用信號以退出。 |
| SHELL | 指定執(zhí)行腳本的shell | 指定RUN CMD ENTRYPOINT 執(zhí)行命令的時(shí)候 使用的shell |
5.4 案例
5.4.1 自定義centos7鏡像 。
- 默認(rèn)登錄路徑為 :/usr.
- 可以使用vim
- 實(shí)現(xiàn)步驟 :
# 創(chuàng)建文件夾
mkdir dockerfile
# 創(chuàng)建一個(gè)文件
vim centos_dockerfile
# 編寫下面的命令
# 定義父鏡像
From centos:7
# 定義作者的信息
MAINTAINER lyp
# 執(zhí)行安裝 vim 的命令
RUN yum install -y vim
# 設(shè)置工作路徑
WORKDIR / usr
# 定義容器啟動(dòng)執(zhí)行的命令
CMD /bin/bash
# 將上面的命令 統(tǒng)一放到一個(gè)文件中 ,最后使用 命令執(zhí)行該文件
docker build -f ./存放命令的路徑及文件名 -t 創(chuàng)建的鏡像的名稱 : 版本 . (最后是一個(gè)點(diǎn))
# 根據(jù)新創(chuàng)建的鏡像創(chuàng)建容器
docker run -it --name=lyp_centos lyp_centos:1 /bin/bash
5.4.2 定義 dockerfile,發(fā)布springBoot項(xiàng)目
將事先準(zhǔn)備好的jar文件上傳到linux服務(wù)器上面 。
將jar添加到容器中去。
實(shí)現(xiàn)步驟 :
# 定義父鏡像
FROM java:8
# 定義作者信息
MAINTAINER lyp
# 添加jar包到容器中
ADD 項(xiàng)目名稱 .jar app.jar
# 執(zhí)行命令 啟動(dòng)
CMD java -jar app.jar
# 使用build命令執(zhí)行上面的命令文件
docker build -f ./存放命令的路徑及文件名 -t 創(chuàng)建的鏡像的名稱 : 版本 . (最后是一個(gè)點(diǎn))
6. Docker相關(guān)概念
7. 服務(wù)編排
8. Docker容器數(shù)據(jù)卷
- 數(shù)據(jù)卷:是宿主機(jī)中的一個(gè)文件或者目錄 。
- 當(dāng)數(shù)據(jù)卷目錄和數(shù)據(jù)卷目錄綁定后,對方的修改會立即同步。
- 一個(gè)數(shù)據(jù)卷可以被多個(gè)容器同時(shí)掛載。
8.1 數(shù)據(jù)卷的概念以及作用
- 思考:當(dāng)Docker 刪除后在容器中產(chǎn)生的數(shù)據(jù)還存在嗎?
- 思考:Docker容器和外部機(jī)器可以直接交換文件嗎?
- 思考:容器之間如何進(jìn)行數(shù)據(jù)的交互?
8.1.1數(shù)據(jù)卷的作用
- 容器數(shù)據(jù)持久化。
- 外部機(jī)器和容器之間的間接通信。
- 容器之間數(shù)據(jù)交換。
8.2 配置數(shù)據(jù)卷
- 創(chuàng)建啟動(dòng)容器的時(shí)候使用-v設(shè)置數(shù)據(jù)卷 。
- 創(chuàng)建的目錄必須是絕對路徑。
- 路徑之間使用 ‘:’ 分割不能有空格。
- 如果目錄不存在會自動(dòng)創(chuàng)建。
- 可以掛在多個(gè)數(shù)據(jù)卷。
docker run -it --name=cf -v /root/data:/root/data-container /centos:7 /bin/bash
8.2.1 操作
1. 創(chuàng)建容器并掛在數(shù)據(jù)卷 : docker run -it --name=cf -v /root/data:/root/data-container :centos:7 /bin/bash
2. 在容器中創(chuàng)建文件 : touch a.txt
3. 在宿主機(jī)中寫入文件 : echo 123 > b.txt
-------------------------------------------
1. 創(chuàng)建一個(gè)守護(hù)模式的容器并掛載數(shù)據(jù)卷:docker run -id --name=ct -v /root/data:/root/data-container centos:7
2. 進(jìn)入到容器中 : docker exec -it ct /bin/bash
-------------------------------------------
1. 創(chuàng)建容器并掛載兩個(gè)以上數(shù)據(jù)卷 : docker run -it --name=cs -v ~/data:/root/data1\ -v ~/data:/root/data-container \ centos:7 /bin/bash 其中~代表 /root (但是只能將宿主機(jī)的路徑寫成這樣) \ 代表沒有寫完命令 換行繼續(xù)寫。
8.2.2 兩個(gè)容器同時(shí)掛載到一個(gè)數(shù)據(jù)卷上實(shí)現(xiàn)兩個(gè)容器之間的數(shù)據(jù)交換
1. 創(chuàng)建第一個(gè)容器綁定到宿主機(jī)的data目錄上 : docker run -it --name=cp -v /root/data:/root/data centos:7
2. 創(chuàng)建第二個(gè)容器也綁定到宿主機(jī)的data目錄上:docker -it --name=cd -v /root/data:/root/data centos:7
3. 在第二個(gè)容器中寫入內(nèi)容到c.txt文件 : echo cd-container > c.txt
4. 查看該文件 : cat c.txt
8.3 配置數(shù)據(jù)卷容器
8.3.1 多容器進(jìn)行數(shù)據(jù)交換
- 多個(gè)容器掛載同一個(gè)數(shù)據(jù)卷,但是工作其來比較麻煩。
-
數(shù)據(jù)卷容器。
容器數(shù)據(jù)卷
8.3.2 操作
1. 創(chuàng)建c3數(shù)據(jù)卷容器,使用-v參數(shù)設(shè)置數(shù)據(jù)卷:docker run -it --name=c3 -v /volume centos:7 /bin/bash
2. 創(chuàng)建并啟動(dòng)c2 容器,使用 -volumes-from 參數(shù)設(shè)置數(shù)據(jù)卷 : docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
3. 創(chuàng)建并啟動(dòng)c2容器 ,使用 -volumes-from 參數(shù)設(shè)置數(shù)據(jù)卷:docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
4. 查看容器詳情 : docker inspect 容器名稱




