应用场景:昨天在用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
好了,可以在当前服务器上启动镜像,可以运行了。