應用場景:昨天在用docker部署項目時,生成鏡像並啓動。但是當我又修改了項目時,再刷新項目,並未更新。隨後開始排查問題,下面將解決思路及用到的命令記錄下來。
先說解決方式:
由於利用docker部署,其實在docker內部拷貝了一份項目,而你修改源目錄的項目時不起作用的,替換一下就好了
圖中/usr/src/app就是我將項目存到docker中的地址,將docker中的項目替換成更新的源目錄項目
sudo docker cp /home/ubuntu/originblog-master/app/ 你的容器ID:/usr/src
替換成功後,重新啓動下鏡像,更新的內容就生效了。
下面是解決問題時用到的命令(可忽略)
1、Docker 刪除鏡像
①. 刪除前需要保證容器是停止的 stop
②. 需要注意刪除鏡像和容器的命令不一樣。 docker rmi ID ,其中 容器(rm) 和 鏡像(rmi)
③. 順序需要先刪除容器
2、docker修改鏡像名稱
docker tag 鏡像ID REPOSITORY:TAG
3、解決Docker無法刪除鏡像 - image is referenced in multiple
docker rmi ace-gate:v9(加上TAG就行了)
4、docker鏡像內的文件互相拷貝
將本地文件拷貝到docker 鏡像內
docker cp /Users/howey/Documents/apache-maven-3.5.2/ 749056ea1637:/opt
docker cp 本地路徑 容器Id或name:容器目錄
將docker內文件拷貝到本地文件夾內
docker cp 749056ea1637:/Users/howey/Documents/apache-maven-3.5.2 /opt/
docker cp 容器Id:本地路徑 鏡像路徑
5、如何將自己的鏡像上傳到Docker hub上
①.首先需要擁有自己的Docker hub賬號,註冊地址
②.使用Docker hub賬號在驗證本地登錄
docker login
③.先docker images看看本地的鏡像
如果REPOITORY的名不是你Docker hub賬號和倉庫,即Docker ID/倉庫名,是上傳不成功的,當然可以使用下面命令更改
docker tag 鏡像ID 用戶名稱/鏡像源名(repository name):新的標籤名(tag)
④ 提交修改,生成一個新版本,-m爲添加註釋;-a是作者;後面546598027dda 是容器ID;後面跟的是你要生成的鏡像的名字。
docker commit -m "Added a new image" -a "cherich" 546598027dda cherichsun/originblog:0.1
④.使用docker push命令將鏡像上傳到docker hub的倉庫
docker push <hub-user>/<repo-name>:<tag>
⑤.登錄到自己的Docker hub上驗證
6、進入容器內部
docker exec -it blog /bin/sh(可能docker版本的原因,我用這個命令可以進去)
docker exec -it blog /bin/bash
7、如何將自己的鏡像拉到服務器上
進入你自己的docker hub
docker pull cherichsun/originblog:0.1
好了,可以在當前服務器上啓動鏡像,可以運行了。