前言:Docker容器一旦建立後對容器內文件配置和參數進行修改沒有宿主機那麼方便,本文提供了幾種常見的容器內文件的修改方式,在使用過程當中能夠根據狀況靈活選擇。python
容器建立docker
根據nginx鏡像建立容器vim
[ ]8be63cc8acf6dc466ab4bf722e92de425a27ec522eb2884c17a27c1f29e57553
修改文件
ruby
容器建立完成後咱們須要對nginx.conf配置進行修改,直接進入容器進行修改bash
[root@k8s-node2 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8be63cc8acf6 nginx:latest "/docker-entrypoin..." 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp nginx01[root@k8s-node2 ~]# docker exec -it 8be63cc8acf6 bashroot@8be63cc8acf6:/# cd /etc/nginx/root@8be63cc8acf6:/etc/nginx# lsconf.d fastcgi_params koi-utf koi-win mime.types modules nginx.conf scgi_params uwsgi_params win-utfroot@8be63cc8acf6:/etc/nginx# vim nginx.conf bash: vim: command not found
能夠看到咱們使用vim命令修改的時候,提示vim命令沒有找到,由於docker鏡像在構建的時候,爲了減小層級,遵循精簡的原則,體積越小容器啓動會越快,因此不少組件沒有安裝。
微信
安裝vim命令app
可使用yum -y install vim或者apt-get install vim命令安裝
root@8be63cc8acf6:/etc/nginx# apt-get install vimReading package lists... DoneBuilding dependency tree Reading state information... DoneE: Unable to locate package vim
root@8be63cc8acf6:/etc/nginx# apt-get install vimReading package lists... DoneBuilding dependency tree Reading state information... DoneThe following additional packages will be installed: libgpm2 vim-common vim-runtime xxdSuggested packages: gpm ctags vim-doc vim-scriptsThe following NEW packages will be installed: libgpm2 vim vim-common vim-runtime xxd0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.Need to get 7425 kB of archives.After this operation, 33.8 MB of additional disk space will be used.Do you want to continue? [Y/n] y....
當出現上面提示時,須要先apt-get update獲取到最新的軟件包,等更新完畢之後再敲命令:apt-get install vim命令便可
而後你就能夠直接使用vim編輯nginx.conf配置文件了
Linux上可使用cp命令進行文件複製和備份,docker也可使用cp命令在宿主機和docker容器件進行文件的複製
命令格式docker cp 容器ID或名稱:容器目錄 物理機目錄docker cp 物理機目錄 容器ID或名稱:容器目錄
[ ]CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8be63cc8acf6 nginx:latest "/docker-entrypoin..." About an hour ago Up About an hour 0.0.0.0:80->80/tcp nginx01fcd01514c5cc training/webapp "python app.py" 9 days ago Up 9 days 0.0.0.0:5000->5000/tcp cranky_darwin[ ][ ]anaconda-ks.cfg docker initial-setup-ks.cfg nginx.conf
Docker提供了數據持久化的方式,讓docker內數據管理更加便利,容器建立的時候作好目錄映射或者文件映射,直接修改物理機文件,容器內的文件會相應變化,這種方式的好處就是即便容器被刪除了,物理機上的數據仍然不會丟失。
卷映射這種方式至關於,將物理機/etc/nginx/nginx.conf配置文件映射到容器內路徑的nginx.conf,當時你也能夠直接映射目錄到容器內的目錄。
[root@k8s-node2 nginx]# docker run -itd -p 8080:80 -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf --name=webtest nginx:latestd805df368a6f140de2f92384e2f53c1c503fe42a4d983363eb0fc44de54afb73[root@k8s-node2 nginx]# [root@k8s-node2 nginx]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd805df368a6f nginx:latest "/docker-entrypoin..." 22 seconds ago Up 21 seconds 0.0.0.0:8080->80/tcp webtest
如上經過命令-v建立容器,將宿主機nginx.conf文件映射到容器內部nginx服務/etc/nginx/目錄下。
說明:
-v 本地目錄:容器目錄。掛載主機的本地目錄:目錄到容器的目錄,本地目錄的路徑必須是絕對路徑
容器的路徑若是不存在會自動建立
當咱們須要修改容器內的nginx.conf配置文件時,直接修改宿主機/etc/nginx/nginx.conf配置便可,如圖,咱們在宿主機插入hello數據,進入容器內部檢查,容器內數據也發生了變化,是否是很方便。
[root@k8s-node2 nginx]# echo hello >>nginx.conf [root@k8s-node2 nginx]# cat nginx.conf | grep hellohello
[root@k8s-node2 nginx]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd805df368a6f nginx:latest "/docker-entrypoin..." 14 minutes ago Up 14 minutes 0.0.0.0:8080->80/tcp webtest[root@k8s-node2 nginx]# docker exec -it d805df368a6f bashroot@d805df368a6f:/# cd /etc/nginx/root@d805df368a6f:/etc/nginx# cat nginx.conf | grep hellohello
往期精選
June 2020
文字:原創
掃碼關注咱們
微信號 : 等風來
公衆號:運維之美
點個在看 你最好看
我知道你
哦
本文分享自微信公衆號 - 運維之美(ywzm8976)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。