Docker宿主機(jī)與容器之間的文件拷貝實(shí)例詳解
一,Docker運(yùn)行MySQL容器
容器中的管理數(shù)據(jù)主要有兩種方式:
數(shù)據(jù)卷 Data Volumes 容器內(nèi)數(shù)據(jù)直接映射到本地主機(jī)環(huán)境;
數(shù)據(jù)卷容器(Data Volume Containers 使用特定容器維護(hù)數(shù)據(jù)卷
利用MySQL鏡像安裝MySQL服務(wù)
docker run -p 3307:3306 --name mysql1 -di -v /home/javaxl/data/mysql/mysql.conf.d/:/etc/mysql/mysql.conf.d/ -v /home/javaxl/data/mysql/data/:/var/lib/mysql -v /home/javaxl/data/mysql/log/:/var/log -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
在虛擬機(jī)連接工具中創(chuàng)建MySQL數(shù)據(jù)庫,將以上代碼在鏈接工具運(yùn)行即可
執(zhí)行完畢后在數(shù)據(jù)庫中嘗試鏈接
當(dāng)出現(xiàn)以下錯(cuò)誤時(shí)也許是沖突的原因,有兩個(gè)后多個(gè)密碼相同的數(shù)據(jù)庫,在鏈接工具中停掉其中一個(gè)即可(命令如下:docker stop 數(shù)據(jù)庫名)
從容器中拷貝文件到宿主機(jī)
docker cp tomcat1:/usr/local/tomcat/webapps/hello /javadxy/software/apache-tomcat-8.5.20/webapps
從宿主機(jī)拷貝文件到容器(與上反過來)
docker cp /javadxy/software/apache-tomcat-8.5.20/webapps tomcat1:/usr/local/tomcat/
二,數(shù)據(jù)卷
數(shù)據(jù)卷是一個(gè)可供一個(gè)或多個(gè)容器使用的特殊目錄,它將主機(jī)操作系統(tǒng)目錄直接映射進(jìn)容器。
它可以提供很多有用的特性:
1.數(shù)據(jù)卷 可以在容器之間共享和重用
2.對(duì)數(shù)據(jù)卷的修改會(huì)立馬生效
3.對(duì)數(shù)據(jù)卷的更新,不會(huì)影響鏡像
4.數(shù)據(jù)卷 默認(rèn)會(huì)一直存在,即使容器被刪除
將宿主機(jī)的目錄與容器的目錄進(jìn)行掛載,實(shí)現(xiàn)數(shù)據(jù)共享
docker run -di --name c2 -v /home/dxy/data/:/home/xionger/data/ centos:7
前面放的是前面是宿主機(jī)目錄,后面是容器目錄
執(zhí)行以上命令
結(jié)論:不管宿主機(jī)、容器在指定目錄創(chuàng)建文件夾還是文件,都會(huì)會(huì)被共享;
三,數(shù)據(jù)卷容器
數(shù)據(jù)卷容器
如果用戶需要在多個(gè)容器之間共享一些持續(xù)更新的數(shù)據(jù),最簡單的方式是使用數(shù)據(jù)卷容器。
數(shù)據(jù)卷容器也是一個(gè)容器,但是它的目的是專門提供數(shù)據(jù)卷給其他容器掛載
docker run -di -v /home/javadxy/data/c4 --name c4 centos:7
標(biāo)記部分屬于內(nèi)部容器
docker run -di --volumes-from c4 --name c6 centos:7
其中c4為數(shù)據(jù)卷容器,c6為普通容器,其中c4就起到一個(gè)橋接作用,我們可以通過docker inspect查看容器的詳細(xì)情況
docker inspect c4
docker inspect c6(建議將這段copy出來后續(xù)會(huì)用的到)
會(huì)發(fā)現(xiàn)c4、c6目錄掛載情況是一樣的
結(jié)論:不管c4、c6在指定目錄創(chuàng)建文件夾還是文件,都會(huì)會(huì)被共享;
四,Dockerfile制作增強(qiáng)版
自定義centos,具備vim及ifconfig作用(體會(huì)學(xué)習(xí)Dockerfile的意義)
cd /javaxl/software mkdir mydocker vi mycentosDockerfile
構(gòu)建鏡像
?docker build -f mycentosDockerfile -t javadxy/centos:v1.0 .
通過鏡像運(yùn)行一個(gè)容器進(jìn)行測(cè)試
docker run -it --name mc1 javadxy/centos:v1.0 /bin/bash
向 mycentosDockerfile 編輯內(nèi)容
FROM centos:7 MAINTAINER javaxl "javaxl@qq.com" RUN yum -y install vim RUN yum install net-tools.x86_64 -y CMD /bin/bash
五,Docker制作自定義Tomcat
cd /javaxl/software mkdir mydocker vi mytomcatDockerfile? ? -------------創(chuàng)建目錄
向 mytomcatDockerfile 編輯內(nèi)容
FROM centos:7
MAINTAINER javaxl "javaxl@qq.com"ENV workerDir /home/javaxl/dockerfile/3 ----------------代表容器自動(dòng)跳轉(zhuǎn)的容器
WORKDIR $workerDirADD jdk-8u151-linux-x64.tar.gz $workerDir
COPY apache-tomcat-8.5.20.tar.gz $workerDir
RUN tar -xvf apache-tomcat-8.5.20.tar.gz apache-tomcat-8.5.20ENV JAVA_HOME $workerDir/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV TOMCAT_HOME $workerDir/apache-tomcat-8.5.20
ENV PATH $JAVA_HOME/bin:$TOMCAT_HOME/bin:$TOMCAT_HOME/lib:$PATH ---------配置變量EXPOSE 8080 ---------開放端口
ENTRYPOINT ["/home/javaxl/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]ADD與COPY的區(qū)別:
add是將壓縮包添加到工作目錄并解壓
copy只把壓縮包上傳至工作目錄不解壓
提示:將以上步驟完成之后不能直接執(zhí)行以下命令,要看當(dāng)前目錄是否有jdk文件
以上沒問題后在執(zhí)行以下命令
docker build -f mytomcatDockerfile -t javaxl/tomcat8:v1.0 .
如圖完成
通過鏡像運(yùn)行2個(gè)容器進(jìn)行測(cè)試
?docker run -di --name mt1 -P javaxl/tomcat8:v1.0 ?docker run -di --name mt2 -P javaxl/tomcat8:v1.0
然后在瀏覽器上輸入地址訪問Tomcat
http://192.168.195.139:49153/
http://192.168.195.139:49154/
總結(jié)
到此這篇關(guān)于Docker宿主機(jī)與容器之間的文件拷貝的文章就介紹到這了,更多相關(guān)Docker宿主機(jī)與容器的文件拷貝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker配置靜態(tài)ip的實(shí)現(xiàn)示例
如果不配置會(huì)docker會(huì)自動(dòng)分配ip地址給容器,但是每次重啟后ip地址會(huì)改變,本文主要介紹了docker配置靜態(tài)ip的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12Docker搭建Redis主從復(fù)制的實(shí)現(xiàn)步驟
本文主要介紹了Docker搭建Redis主從復(fù)制的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11手工制作docker鏡像-包含多個(gè)服務(wù)ssh+nginx
這篇文章主要介紹了手工制作docker鏡像-包含多個(gè)服務(wù)ssh+nginx,需要的朋友可以參考下2024-07-07docker使用jdk21啟動(dòng)jar包報(bào)錯(cuò)的解決方案
這篇文章主要介紹了docker使用jdk21啟動(dòng)jar包報(bào)錯(cuò)的解決方案,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07Docker 容器之間的互相通信實(shí)現(xiàn)示例
本文主要介紹了Docker 容器之間的互相通信實(shí)現(xiàn)示例,通過創(chuàng)建自定義網(wǎng)絡(luò),你可以輕松地在 Docker 容器之間建立通信,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01