修改Docker容器內文件的三種實現(xiàn)方式
說明:本文介紹修改Docker容器內文件的三種方式
方式一:直接修改
敲下面的命令,進入Docker容器,如mysql
docker exec -it mysql /bin/bash
修改mysql的配置文件,/etc/my.cnf
vim /etc/my.cnf
如下,如果vim不行,可試下vi或其他編輯命令,總之,我試了一些編輯命令,是無法編輯的
方式二:將文件復制到容器外
敲下面的命令,將容器內需要修改的文件拷貝到容器外面,如mysql容器,將容器內的配置文件復制到容器外。
如下,將my.cnf復制到容器外的當前位置
docker cp mysql:/etc/my.cnf ./
修改配置,如端口號,改回3306
修改完成,敲下面的命令,將文件復制回容器里
docker cp ./my.cnf mysql:/etc/
進入容器查看,可見修改成功。
這時重啟容器,容器內MySQL服務的端口就是3306
方式三:使用數(shù)據卷
敲下面的命令,創(chuàng)建一個數(shù)據卷;
docker volume create mysql
敲下面的命令,查看已創(chuàng)建的數(shù)據卷;
docker volume ls
運行容器時,加上-v 數(shù)據卷名稱:容器內路徑掛載數(shù)據卷,這樣容器內的文件就可以在容器外修改了,是同步的。
如下,我想把mysql容器內的/etc路徑掛載到mysql數(shù)據卷上。
docker run --name=mysql -v mysql:/etc -e MYSQL_ROOT_PASSWORD=123456 -p 4406:4406 -d mysql:8.1.0
敲下面的命令,查看數(shù)據卷掛載的、容器內路徑在哪里,這里的mysql是數(shù)據卷的名稱。
docker volume inspect mysql
切換到這個路徑,可以看到這里的文件其實就是mysql容器內下的/etc文件夾,在這里我們可以直接修改MySQL配置文件,my.cnf
端口號設置為4406,因為剛剛啟動容器指定的容器內端口是4406,不改成4406是沒法使用MySQL的
修改完,重啟容器生效。
另外
另外,關于容器的數(shù)據卷。我們運行容器時,docker會自動為我們掛載一個數(shù)據卷,保存容器內的應用產生的數(shù)據,可敲下面的命令查看
docker inspect -f '{{range .Mounts}}{{.Name}} {{end}}' 容器名
如上,是我創(chuàng)建的MySQL容器自動創(chuàng)建的數(shù)據卷。這個數(shù)據卷掛載的是容器內/var/lib/mysql
路徑,該路徑下存儲了MySQL的數(shù)據。
所以,如果你不小心刪除了容器,也不要擔心數(shù)據會丟失,可以再運行一個容器,然后掛載這個數(shù)據卷,這樣運行的容器就是有歷史數(shù)據的(親測有效)
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
docker-compose啟動redis多機集群的實現(xiàn)(6臺服務器3主3從)
本文主要介紹了docker-compose啟動redis多機集群的實現(xiàn)(6臺服務器3主3從),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07Docker?Desktop無法正常啟動解決(failed?to?start...)
有一段時間沒有使用docker了,突然要用到結果發(fā)現(xiàn)docker?desktop用不了了,這篇文章主要給大家介紹了關于Docker?Desktop無法正常啟動解決的過程,,需要的朋友可以參考下2023-01-01CentOS 7.x docker使用overlay2存儲方式
這篇文章主要介紹了CentOS 7.x docker使用overlay2存儲方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11