修改Docker容器內(nèi)文件的三種實(shí)現(xiàn)方式
說(shuō)明:本文介紹修改Docker容器內(nèi)文件的三種方式
方式一:直接修改
敲下面的命令,進(jìn)入Docker容器,如mysql
docker exec -it mysql /bin/bash
修改mysql的配置文件,/etc/my.cnf
vim /etc/my.cnf
如下,如果vim不行,可試下vi或其他編輯命令,總之,我試了一些編輯命令,是無(wú)法編輯的

方式二:將文件復(fù)制到容器外
敲下面的命令,將容器內(nèi)需要修改的文件拷貝到容器外面,如mysql容器,將容器內(nèi)的配置文件復(fù)制到容器外。
如下,將my.cnf復(fù)制到容器外的當(dāng)前位置
docker cp mysql:/etc/my.cnf ./

修改配置,如端口號(hào),改回3306

修改完成,敲下面的命令,將文件復(fù)制回容器里
docker cp ./my.cnf mysql:/etc/

進(jìn)入容器查看,可見(jiàn)修改成功。
這時(shí)重啟容器,容器內(nèi)MySQL服務(wù)的端口就是3306

方式三:使用數(shù)據(jù)卷
敲下面的命令,創(chuàng)建一個(gè)數(shù)據(jù)卷;
docker volume create mysql
敲下面的命令,查看已創(chuàng)建的數(shù)據(jù)卷;
docker volume ls

運(yùn)行容器時(shí),加上-v 數(shù)據(jù)卷名稱:容器內(nèi)路徑掛載數(shù)據(jù)卷,這樣容器內(nèi)的文件就可以在容器外修改了,是同步的。
如下,我想把mysql容器內(nèi)的/etc路徑掛載到mysql數(shù)據(jù)卷上。
docker run --name=mysql -v mysql:/etc -e MYSQL_ROOT_PASSWORD=123456 -p 4406:4406 -d mysql:8.1.0

敲下面的命令,查看數(shù)據(jù)卷掛載的、容器內(nèi)路徑在哪里,這里的mysql是數(shù)據(jù)卷的名稱。
docker volume inspect mysql

切換到這個(gè)路徑,可以看到這里的文件其實(shí)就是mysql容器內(nèi)下的/etc文件夾,在這里我們可以直接修改MySQL配置文件,my.cnf

端口號(hào)設(shè)置為4406,因?yàn)閯倓倖?dòng)容器指定的容器內(nèi)端口是4406,不改成4406是沒(méi)法使用MySQL的

修改完,重啟容器生效。
另外
另外,關(guān)于容器的數(shù)據(jù)卷。我們運(yùn)行容器時(shí),docker會(huì)自動(dòng)為我們掛載一個(gè)數(shù)據(jù)卷,保存容器內(nèi)的應(yīng)用產(chǎn)生的數(shù)據(jù),可敲下面的命令查看
docker inspect -f '{{range .Mounts}}{{.Name}} {{end}}' 容器名
如上,是我創(chuàng)建的MySQL容器自動(dòng)創(chuàng)建的數(shù)據(jù)卷。這個(gè)數(shù)據(jù)卷掛載的是容器內(nèi)/var/lib/mysql路徑,該路徑下存儲(chǔ)了MySQL的數(shù)據(jù)。
所以,如果你不小心刪除了容器,也不要擔(dān)心數(shù)據(jù)會(huì)丟失,可以再運(yùn)行一個(gè)容器,然后掛載這個(gè)數(shù)據(jù)卷,這樣運(yùn)行的容器就是有歷史數(shù)據(jù)的(親測(cè)有效)

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker pull鏡像的時(shí)候下載卡死問(wèn)題及解決過(guò)程
Docker pull鏡像卡死時(shí),刪除overlay2和tmp目錄文件可能因權(quán)限問(wèn)題報(bào)錯(cuò),重新安裝Docker或重啟服務(wù)可解決,此為個(gè)人經(jīng)驗(yàn),供參考,歡迎支持腳本之家2025-09-09
docker update 命令與環(huán)境變量管理方法
本文介紹Docker中dockerupdate命令用于動(dòng)態(tài)調(diào)整運(yùn)行中容器的配置,如資源限制、重啟策略等,但部分需重啟生效,環(huán)境變量在啟動(dòng)時(shí)設(shè)置,無(wú)法動(dòng)態(tài)修改,建議通過(guò)掛載文件或Docker Compose管理,感興趣的朋友跟隨小編一起看看吧2025-07-07
Docker部署Java項(xiàng)目實(shí)踐詳細(xì)介紹
Docker是一種流行的容器化平臺(tái),用于部署和管理Java項(xiàng)目,這篇文章主要給大家介紹了關(guān)于Docker部署Java項(xiàng)目的相關(guān)資料,通過(guò)構(gòu)建Docker鏡像、編寫Dockerfile和使用DockerCompose進(jìn)行多服務(wù)部署,需要的朋友可以參考下2025-05-05
docker中Dockerfile方式建立鏡像HelloWorld
這篇文章主要介紹了docker中Dockerfile方式建立鏡像HelloWorld,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
docker啟動(dòng)nginx無(wú)法訪問(wèn)的問(wèn)題解決
本文主要介紹了docker啟動(dòng)nginx無(wú)法訪問(wèn)的問(wèn)題解決,主要遇到404錯(cuò)誤,問(wèn)題原因是配置文件路徑錯(cuò)誤和權(quán)限問(wèn)題,下面就來(lái)具體介紹一下問(wèn)題解決,感興趣的可以了解一下2025-02-02

