备份容器

  1. 首先,为了备份Docker中的容器,我们可以先查看我们想要备份的容器列表:
    # docker ps
  2. 此命令可以查看所有容器:
    # docker ps -a
  3. 找到我们需要备份的容器后,需要先创建该容器的快照,执行下面的命令:
    # docker commit -p 30b8f18f20b4 graphhopper_backup
    备份mongoDB
  4. 其中,-p 后第一个参数是要备份的容器的ID,第二个参数是新的镜像名称。此时,这个新镜像就已经保存下来了,可以执行下面的命令来查看镜像:
    # docker images
  5. 现在,上面的快照已经作为Docker镜像保存了。对于备份该快照,我们有两个选择,一个是我们可以登录进Docker注册中心,并推送该镜像到自己的Repositories中;另一种选择是是我们可以将Docker镜像打包成tar包备份到本地。

我们选择的操作是将镜像保存在Docker注册中心。我们需要运行 docker login 命令来登录进Docker注册中心,然后推送所需的镜像即可。
6. 首先,必须要登录自己的dockerhub 账号:
# docker login
登录dockerhub
然后填写用户名 和 密码,登录成功。
7. 上传之前,要先对镜像加tag:
# docker tag container-backup peisongli/peisongli:graphhopper_backup
其中,tag后面第一个参数是镜像名称,第二个参数是新的tag名称(其中peisongli/peisongli是自己的Repositories地址)
tag操作
8. 加完tag后,执行保存操作:
# docker push peisongli/peisongli:mongo_backup
push上传
9. 等待保存完成。
部分操作

恢复容器

成功备份了Docker容器后,可以通过docker pull恢复docker容器:

docker pull …

在镜像被加载后,我们将用加载的镜像去运行Docker容器。

# docker run -d -p 27017:27017 mongo_backup

重装系统后恢复:

部署docker UI管理界面:portainer

  1. 首先,去dockerhub下载镜像文件,然后按照操作说明进行portainer部署即可。
    # docker pull portainer/portainer
    # docker volume create portainer_data
    # docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

  2. 部署完成后,即可登录,第一次登陆时需要设置密码。管理的库选择local。

恢复graphhopper:

  1. 从自己的dockerhub中pull镜像文件
    # docker pull peisongli/peisongli:graphhopper_backup
  2. 刚开始,通过下面的命令来部署容器
    # docker run -p 8990:8989 --name graphhopper -d peisongli/peisongli:graphhopper_backup
    此时,容器一启动就会自动关闭,无法保持一直开启的状态。
    退出原因:
    1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出
    2、容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出
    3、这个是 docker 的机制问题
    解决办法:
    添加-it 参数交互运行
    添加-d 参数后台运行
    这样就能启动一个一直停留在后台运行的graphhopper了。
    # docker run -it -p 8990:8989 --name graphhopper -d peisongli/peisongli:graphhopper_backup /bin/bash
  3. 此时虽然部署好了graphhopper,但是测试发现,graphhopper的路线规划功能仍无法正常使用,这是因为我们虽然部署好了graohhopper,但是并没有建立路径规划区域,即没有下载进行路径规划的地图区域。所以我们继续进行下面的操作。
  4. 首先,进入portainer,打开graphhopper容器的console。
    打开后,首先默认进入的是data文件夹,可以发现,此时文件夹是空的,没有下载任何地图区域。
    所以,我们先下载我们需要的英国的osm地图:
    # wget http://download.geofabrik.de/europe/great-britain-latest.osm.pbf
  5. 下载好地图后,还是无法进行路径规划,这是因为我们只下载了地图文件,但没有对其进行解析操作,所以我们继续进行下面的操作:
    进入graphhopper文件夹,运行start.sh
    # cd graphhopper
    # ./start.sh
    等待一段时间,解析完成,graphhopper服务器打开,端口打开。此时,测试发现,可以成功执行路径规划了!!!?
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐