# Docker更新镜像的方法


利用Docker部署应用非常方便，随着镜像的更新，我们的应用也需要及时更新，这里就来简单给大家介绍三种更新Docker镜像的方法。

<!--more-->

## 更新用Docker命令部署的应用

以halo博客为例子（方法通用），

### 第一步

利用`docker ps`命令确定容器的名字，

    docker ps 


![](https://obsidian-1259519358.cos.ap-nanjing.myqcloud.com/typora/filters:no_upscale())

这边圆圈圈起来的就是容器的名字啦。

Halo里面的容器名字就是`halo`

### 第二步

备份数据(重要)，并停止容器

利用`docker inspect 容器的名字`找出你容器的映射到本地的文件路径，

![](https://obsidian-1259519358.cos.ap-nanjing.myqcloud.com/typora/filters:no_upscale())

图片里就是：

    cp -r /root/data/docker_data/zfile/zfile/data /root/data/docker_data/zfile/zfile/data.backup


Halo里面就是：

    cp -r ~/.halo ~/.halo.1.4.15  # 备份并重命名为.halo.1.4.15

### 第三步

拉取最新的容器镜像

    docker pull halohub/halo:1.4.16


`halohub/halo:1.4.16`这部分替换成你需要更新的镜像的名字和版本号

很多是类似这种`xxxxx/xxxxx:latest`

### 第四步

重新创建容器

    docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.4.16


这部分的命令相信之前看过视频的小伙伴都保存在了自己对应文件夹下的`config.txt`文件里了，直接粘贴出来，修改最后面镜像的部分（这里是`halohub/halo:1.4.16`）重新部署就ok了。

参考来源：[Halo官方文档](https://docs.halo.run/getting-started/upgrade)

## 更新用Docker-compose部署的应用

很简单，只要三步。

### 第一步

进入到你docker-compose所在的文件夹下，执行

    docker-compose pull

### 第二步

重启你的容器

    docker-compose up -d --remove-orphans

### 第三步（可选）

删除掉旧的镜像

    docker image prune 

## 直接利用Portainer更新

有安装Portainer的同学可以直接用Portainer来更新容器镜像。

Portainer的安装可以看这里：[【Docker系列】Docker可视化面板——Portainer](https://blog.laoda.de/archives/portainer)

### 第一步

登陆Portainer面板，选择容器

![](https://obsidian-1259519358.cos.ap-nanjing.myqcloud.com/typora/filters:no_upscale())

### 第二步

选择需要更新的容器，点击`Recreate`，然后点击`Pull latest images`，最后点击`Recreate`

等待完成就ok了。

![](https://obsidian-1259519358.cos.ap-nanjing.myqcloud.com/typora/filters:no_upscale())

[查看原网页: blog.laoda.de](https://blog.laoda.de/archives/docker-images-upgrade)

