Docker宿主機(jī)與容器之間的文件拷貝實例詳解
一,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)以下錯誤時也許是沖突的原因,有兩個后多個密碼相同的數(shù)據(jù)庫,在鏈接工具中停掉其中一個即可(命令如下: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ù)卷是一個可供一個或多個容器使用的特殊目錄,它將主機(jī)操作系統(tǒng)目錄直接映射進(jìn)容器。
它可以提供很多有用的特性:
1.數(shù)據(jù)卷 可以在容器之間共享和重用
2.對數(shù)據(jù)卷的修改會立馬生效
3.對數(shù)據(jù)卷的更新,不會影響鏡像
4.數(shù)據(jù)卷 默認(rèn)會一直存在,即使容器被刪除
將宿主機(jī)的目錄與容器的目錄進(jìn)行掛載,實現(xiàn)數(shù)據(jù)共享
docker run -di --name c2 -v /home/dxy/data/:/home/xionger/data/ centos:7
前面放的是前面是宿主機(jī)目錄,后面是容器目錄
執(zhí)行以上命令
結(jié)論:不管宿主機(jī)、容器在指定目錄創(chuàng)建文件夾還是文件,都會會被共享;
三,數(shù)據(jù)卷容器
數(shù)據(jù)卷容器
如果用戶需要在多個容器之間共享一些持續(xù)更新的數(shù)據(jù),最簡單的方式是使用數(shù)據(jù)卷容器。
數(shù)據(jù)卷容器也是一個容器,但是它的目的是專門提供數(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就起到一個橋接作用,我們可以通過docker inspect查看容器的詳細(xì)情況
docker inspect c4
docker inspect c6(建議將這段copy出來后續(xù)會用的到)
會發(fā)現(xiàn)c4、c6目錄掛載情況是一樣的
結(jié)論:不管c4、c6在指定目錄創(chuàng)建文件夾還是文件,都會會被共享;
四,Dockerfile制作增強(qiáng)版
自定義centos,具備vim及ifconfig作用(體會學(xué)習(xí)Dockerfile的意義)
cd /javaxl/software mkdir mydocker vi mycentosDockerfile
構(gòu)建鏡像
?docker build -f mycentosDockerfile -t javadxy/centos:v1.0 .
通過鏡像運(yùn)行一個容器進(jìn)行測試
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 ----------------代表容器自動跳轉(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個容器進(jìn)行測試
?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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker搭建Redis主從復(fù)制的實現(xiàn)步驟
本文主要介紹了Docker搭建Redis主從復(fù)制的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11手工制作docker鏡像-包含多個服務(wù)ssh+nginx
這篇文章主要介紹了手工制作docker鏡像-包含多個服務(wù)ssh+nginx,需要的朋友可以參考下2024-07-07