如何在Linux中备份,恢复和迁移Docker容器 如何实现Docker镜像和容器实例的备份迁移

\u5982\u4f55\u5728Linux\u4e2d\u5907\u4efd\uff0c\u6062\u590d\u548c\u8fc1\u79fbDocker\u5bb9\u5668

1. \u5907\u4efd\u5bb9\u5668
\u9996\u5148\uff0c\u4e3a\u4e86\u5907\u4efdDocker\u4e2d\u7684\u5bb9\u5668\uff0c\u6211\u4eec\u4f1a\u60f3\u770b\u770b\u6211\u4eec\u60f3\u8981\u5907\u4efd\u7684\u5bb9\u5668\u5217\u8868\u3002\u8981\u8fbe\u6210\u8be5\u76ee\u7684\uff0c\u6211\u4eec\u9700\u8981\u5728\u6211\u4eec\u8fd0\u884c\u7740Docker\u5f15\u64ce\uff0c\u5e76\u5df2\u521b\u5efa\u4e86\u5bb9\u5668\u7684Linux\u673a\u5668\u4e2d\u8fd0\u884c docker ps \u547d\u4ee4\u3002
# docker ps

Docker Containers List
\u5728\u6b64\u4e4b\u540e\uff0c\u6211\u4eec\u8981\u9009\u62e9\u6211\u4eec\u60f3\u8981\u5907\u4efd\u7684\u5bb9\u5668\uff0c\u7136\u540e\u53bb\u521b\u5efa\u8be5\u5bb9\u5668\u7684\u5feb\u7167\u3002\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 docker commit \u547d\u4ee4\u6765\u521b\u5efa\u5feb\u7167\u3002
# docker commit -p 30b8f18f20b4 container-backup

Docker Commit
\u8be5\u547d\u4ee4\u4f1a\u751f\u6210\u4e00\u4e2a\u4f5c\u4e3aDocker\u955c\u50cf\u7684\u5bb9\u5668\u5feb\u7167\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u8fd0\u884c docker images \u547d\u4ee4\u6765\u67e5\u770bDocker\u955c\u50cf\uff0c\u5982\u4e0b\u3002
# docker images

Docker Images
\u6b63\u5982\u6211\u4eec\u6240\u770b\u89c1\u7684\uff0c\u4e0a\u9762\u505a\u7684\u5feb\u7167\u5df2\u7ecf\u4f5c\u4e3aDocker\u955c\u50cf\u4fdd\u5b58\u4e86\u3002\u73b0\u5728\uff0c\u4e3a\u4e86\u5907\u4efd\u8be5\u5feb\u7167\uff0c\u6211\u4eec\u6709\u4e24\u4e2a\u9009\u62e9\uff0c\u4e00\u4e2a\u662f\u6211\u4eec\u53ef\u4ee5\u767b\u5f55\u8fdbDocker\u6ce8\u518c\u4e2d\u5fc3\uff0c\u5e76\u63a8\u9001\u8be5\u955c\u50cf\uff1b\u53e6\u4e00\u4e2a\u662f\u6211\u4eec\u53ef\u4ee5\u5c06Docker\u955c\u50cf\u6253\u5305\u6210tar\u5305\u5907\u4efd\uff0c\u4ee5\u4f9b\u4eca\u540e\u4f7f\u7528\u3002
\u5982\u679c\u6211\u4eec\u60f3\u8981\u5728Docker\u6ce8\u518c\u4e2d\u5fc3\u4e0a\u4f20\u6216\u5907\u4efd\u955c\u50cf\uff0c\u6211\u4eec\u53ea\u9700\u8981\u8fd0\u884c docker login \u547d\u4ee4\u6765\u767b\u5f55\u8fdbDocker\u6ce8\u518c\u4e2d\u5fc3\uff0c\u7136\u540e\u63a8\u9001\u6240\u9700\u7684\u955c\u50cf\u5373\u53ef\u3002
# docker login

Docker Login
# docker tag a25ddfec4d2a arunpyasi/container-backup:test
# docker push arunpyasi/container-backup

Docker Push
\u5982\u679c\u6211\u4eec\u4e0d\u60f3\u5907\u4efd\u5230docker\u6ce8\u518c\u4e2d\u5fc3\uff0c\u800c\u662f\u60f3\u8981\u5c06\u6b64\u955c\u50cf\u4fdd\u5b58\u5728\u672c\u5730\u673a\u5668\u4e2d\uff0c\u4ee5\u4f9b\u65e5\u540e\u4f7f\u7528\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u5c06\u5176\u4f5c\u4e3atar\u5305\u5907\u4efd\u3002\u8981\u5b8c\u6210\u8be5\u64cd\u4f5c\uff0c\u6211\u4eec\u9700\u8981\u8fd0\u884c\u4ee5\u4e0b docker save \u547d\u4ee4\u3002
# docker save -o ~/container-backup.tar container-backup

taking tarball backup
\u8981\u9a8c\u8bc1tar\u5305\u662f\u5426\u5df2\u7ecf\u751f\u6210\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5728\u4fdd\u5b58tar\u5305\u7684\u76ee\u5f55\u4e2d\u8fd0\u884c ls \u547d\u4ee4\u5373\u53ef\u3002
2. \u6062\u590d\u5bb9\u5668

\u521b\u5efa\u5b89\u5168Docker\u57fa\u955c\u50cf
** \u6784\u5efaJava\u73af\u5883\u57fa\u955c\u50cf **

\u6211\u521a\u89e3\u91caAlpine Linux\u6784\u5efa\u81ea\u955c\u50cf\u9519\u9009\u62e9\u6211\u4f7f\u7528\u6784\u5efa\u7b80\u6d01\u9ad8\u6548Docker\u955c\u50cf\u6211\u59cb\u5427!

\u7ec4\u5408\uff1aAlpine + bash

\u6bcfDockerfile\u7b2c\u6307\u4ee4\u90fd\u6307\u5b9a\u7236\u7ea7\u5bb9\u5668\u901a\u7528\u4e8e\u7ee7\u627f\u6211\u4f8balpine:latest:
sh

FROM alpine:latest

MAINTAINER cSphere

RUN apk add --no-cache --update-cache bash

CMD ["/bin/bash"]

```

\u73b0\u6211\u6784\u5efa\u5bb9\u5668\uff1a
sh

$ docker build -t my-java-base-image >

---> Running in 63433312d77e

---> bfe94713797a

Removing intermediate container 63433312d77e

... \u7701\u7565\u82e5\u5e72\u884c

Step 4 : CMD /bin/bash

---> Running in d2291684b797

---> ecc443d68f27

Removing intermediate container d2291684b797

Successfully built ecc443d68f27

\u5e76\u4e14\u8fd0\u884c\uff1a
sh

$ docker run --rm -ti my-java-base-image

bash-4.3#

\u529f\u6211\u8fd0\u884c\u7740bashAlpine Linux

今天,我们将学习如何快速地对Docker容器进行快捷备份、恢复和迁移。Docker是一个开源平台,用于自动化部署应用,以通过快捷的途径在称之为容器的轻量级软件层下打包、发布和运行这些应用。它使得应用平台独立,因为它扮演了 Linux上一个额外的操作系统级虚拟化的自动化抽象层。它通过其组件cgroups和命名空间利用Linux内核的资源分离特性,达到避免虚拟机开销的目的。它使得用于部署和扩展web应用、数据库和后端服务的大规模构建组件无需依赖于特定的堆栈或供应者。
所谓的容器,就是那些创建自Docker镜像的软件层,它包含了独立的Linux文件系统和开箱即用的应用程序。如果我们有一个在机器中运行着的Docker容器,并且想要备份这些容器以便今后使用,或者想要迁移这些容器,那么,本教程将帮助你掌握在Linux操作系统中备份、恢复和迁移 Docker容器的方法。
我们怎样才能在Linux中备份、恢复和迁移Docker容器呢?这里为您提供了一些便捷的步骤。

1. 备份容器
首先,为了备份Docker中的容器,我们会想看看我们想要备份的容器列表。要达成该目的,我们需要在我们运行着Docker引擎,并已创建了容器的Linux机器中运行 docker ps 命令。
# docker ps

Docker Containers List
在此之后,我们要选择我们想要备份的容器,然后去创建该容器的快照。我们可以使用 docker commit 命令来创建快照。
# docker commit -p 30b8f18f20b4 container-backup

Docker Commit
该命令会生成一个作为Docker镜像的容器快照,我们可以通过运行 docker images 命令来查看Docker镜像,如下。
# docker images

Docker Images
正如我们所看见的,上面做的快照已经作为Docker镜像保存了。现在,为了备份该快照,我们有两个选择,一个是我们可以登录进Docker注册中心,并推送该镜像;另一个是我们可以将Docker镜像打包成tar包备份,以供今后使用。
如果我们想要在Docker注册中心上传或备份镜像,我们只需要运行 docker login 命令来登录进Docker注册中心,然后推送所需的镜像即可。
# docker login

Docker Login
# docker tag a25ddfec4d2a arunpyasi/container-backup:test# docker push arunpyasi/container-backup

Docker Push
如果我们不想备份到docker注册中心,而是想要将此镜像保存在本地机器中,以供日后使用,那么我们可以将其作为tar包备份。要完成该操作,我们需要运行以下 docker save 命令。
# docker save -o ~/container-backup.tar container-backup

taking tarball backup
要验证tar包是否已经生成,我们只需要在保存tar包的目录中运行 ls 命令即可。
2. 恢复容器
接下来,在我们成功备份了我们的Docker容器后,我们现在来恢复这些制作了Docker镜像快照的容器。如果我们已经在注册中心推送了这些Docker镜像,那么我们仅仅需要把那个Docker镜像拖回并直接运行即可。
# docker pull arunpyasi/container-backup:test

Docker Pull
但是,如果我们将这些Docker镜像作为tar包文件备份到了本地,那么我们只要使用 docker load 命令,后面加上tar包的备份路径,就可以加载该Docker镜像了。
# docker load -i ~/container-backup.tar

现在,为了确保这些Docker镜像已经加载成功,我们来运行 docker images 命令。
# docker images

在镜像被加载后,我们将用加载的镜像去运行Docker容器。
# docker run -d -p 80:80 container-backup

Restoring Docker Tarball
3. 迁移Docker容器
迁移容器同时涉及到了上面两个操作,备份和恢复。我们可以将任何一个Docker容器从一台机器迁移到另一台机器。在迁移过程中,首先我们将把容器备份为Docker镜像快照。然后,该Docker镜像或者是被推送到了Docker注册中心,或者被作为tar包文件保存到了本地。如果我们将镜像推送到了Docker注册中心,我们简单地从任何我们想要的机器上使用 docker run 命令来恢复并运行该容器。但是,如果我们将镜像打包成tar包备份到了本地,我们只需要拷贝或移动该镜像到我们想要的机器上,加载该镜像并运行需要的容器 即可。

  • 瀹夊叏瑙e喅鏂规:Linux鏁版嵁澶囦唤鍜屾仮澶
    绛旓細  Linux鏁版嵁澶囦唤鍜岄噸瑕佹湇鍔″櫒鏁版嵁绫诲埆鐨勫垎鏋愬浜嶭inux鏈嶅姟鍣紝褰撶劧锛鐞嗘兂鐨勫仛娉曟槸澶囦唤鏁翠釜纭洏锛岀敋鑷冲垎鍖哄拰鏂囦欢绯荤粺涓殑鏁版嵁锛岃繖鏍凤紝濡傛灉纭洏鎹熷潖锛岄偅涔堟垜浠彲浠ョ洿鎺ュ皢鏁版嵁瀵煎叆澶囦唤纭洏涓傜鐩樸傚畠鐢氳嚦鍙互鐢ㄥ浠界‖鐩樼洿鎺ユ浛鎹㈡崯鍧忕殑纭洏銆備粠鏁版嵁鎭㈠鐨勮搴︽潵鐪嬶紝杩欑鍏ㄧ鐩樺浠芥槸鏈鏂逛究鐨勶紙绫讳技浜嶹i...
  • Linux澶囦唤鍜屾仮澶
    绛旓細鎵ц鍚庣瓑寰呬竴瀹氭椂闂村氨鍙互浜嗭紝灏嗚繖涓猯inuxbackup.tgz鎷疯礉鍒板叾浠栧湴鏂瑰嵆鍙紝澶囦唤瀹屾垚浜銆傞噸鐐规寚鍑猴細鍦ㄦ墦鍖呰繃绋嬩腑涓嶈杩涜浠讳綍鐨勬搷浣滐紝鍚﹀垯浼氫慨鏀规煇浜涙枃浠讹紝鍦ㄥ浠藉畬鍚巘ar浼氭彁绀洪敊璇傛仮澶嶄篃鏄竴鏍枫2.鎭㈠linux绯荤粺 鎸夌収涓婇潰鐨勬柟寮忓浠藉畬绯荤粺灏卞彲浠ヤ娇鐢ㄨ鏂规硶鎭㈠浣犵殑澶囦唤鏂囦欢浜嗐傚鏋滀綘鐨勭郴缁熷穿婧冧簡鏃犳硶杩涘叆绯荤粺...
  • 濡備綍澶囦唤鍙鎭㈠Linux鏂囦欢鏉冮檺
    绛旓細2. 澶囦唤褰撳墠鐩綍涓(鍖呮嫭瀛愮洰褰)鎵鏈夋枃浠鐨鏉冮檺 [root@linuxprobe tmp]# ls -l total 8 -rwxr--r--. 1 root root 0 Mar 3 04:40 install.txt -rwxr-xr-x. 1 root root 0 Mar 3 04:41 linuxprobe.txt [root@linuxprobe tmp]# getfacl -R . permissions.txt ...姝ゅ懡浠ゅ皢鎵鏈夋枃浠...
  • Linux绯荤粺鎬庢牱澶囦唤涓庤繕鍘?
    绛旓細锛1锛夈澶囦唤鍜屾仮澶闇瑕1涓灏忔椂锛岃繖涓椂闂存牴鎹綘鐢佃剳鐨凜PU閫熷害鍜岀‖鐩樿浆閫熶細鏈夋墍涓嶅悓銆傦紙2锛夈佷笂闈澶囦唤涓庢仮澶娌℃湁椤惧強/home鐩綍鍜/root鐩綍锛屽洜涓烘垜鐨勭郴缁熶富瑕佹槸缁欏鐢熷仛缁冧範鐢鐨勶紝閭d袱涓洰褰曠殑鍐呭娌℃湁鎰忎箟銆傚湪瀹為檯宸ヤ綔涓紝鍙兘杩欎袱涓洰褰曟墠鏄渶閲嶈鐨勶紝浣犲彲浠ユā浠跨潃鍒殑鐩綍娣诲姞鍒癰ackup.sh鍜宺estor...
  • Linux澶囦唤涓庢仮澶
    绛旓細Linux鐨勫浠藉拰鎭㈠寰堢畝鍗曘佹湁涓ょ鏂瑰紡锛 1銆佹妸闇瑕佺殑鏂囦欢锛堟垨鑰呭垎鍖猴級鐢═AR鎵撳寘灏辫銆佷笅娆¢渶瑕佹仮澶嶇殑鏃跺欍佸啀瑙e帇寮瑕嗙洊鍗冲彲 2銆佷娇鐢╠ump鍜宺estore鍛戒护 濡傛灉linux涓婃病鏈塪ump鍜宺estore鎸囦护銆侀渶瑕佸厛瀹夎 鍩烘湰浠嬬粛 dump鏀寔鍒嗗嵎鍜屽閲忓浠 閫氳繃dump鍛戒护鍦ㄩ厤鍚坈rontab鍙互瀹炵幇鏃犱汉鍊煎畧澶囦唤 鍩烘湰浠嬬粛...
  • Linux鏁版嵁鎭㈠Linux鏁版嵁澶囦唤鏂规硶
    绛旓細闇瑕澶囦唤鐨鐩綍閫氬父鍖呮嫭绯荤粺閰嶇疆锛/etc锛夛紝绯荤粺瀹堟姢杩涚▼淇℃伅锛/var锛夛紝鐢ㄦ埛涓汉鏂囦欢锛/home鍜/root锛夛紝浠ュ強鍙夌殑闈炵郴缁熸枃浠讹紙/opt锛夈備竴浜涗笉搴斿浠界殑鐩綍锛屽/proc鍜/dev锛屽洜鍏惰櫄鎷熸ц川鎴栫‖浠朵緷璧栨ц屾棤闇澶囦唤銆傚浜巗itback鐨勮幏鍙栧拰瀹夎锛岀敤鎴烽渶瑕佷笅杞芥簮浠g爜鍘嬬缉鍖咃紝鎸夌収姝ラ瑙e帇銆侀厤缃佺紪璇戝苟瀹夎銆
  • linux澶囦唤鎭㈠澶囦唤鐨刲inux鎭㈠
    绛旓細浣跨敤Ghost杞欢鏉ュ疄鐜澶囦唤鍜屾仮澶峀inux绯荤粺锛1銆侀鍏堢敤鈥滈洦鏋楁湪椋嶨hostXPSP3绾噣鐗圷6.0鈥濆厜鐩樿繘琛屽紩瀵硷紝骞朵娇鐢ㄥ叾涓殑PQ杞欢瀵圭‖鐩樿繘琛屽垎鍖猴紝鍒掑垎鍑轰竴涓垎鍖虹敤浜庡畨瑁匘OS绯荤粺銆傜劧鍚庨夋嫨锛氣滆繍琛孻LMFDOS宸ュ叿绠扁濄傚嵆锛氳繍琛孭Q杞欢锛屽纭洏杩涜鍒嗗尯銆2銆佸厛鍒嗕竴涓垎鍖猴紝澶у皬涓哄ぇ绾︿负4G锛岀敤浜庡畨瑁匘OS绯荤粺浠ュ強瀛樻斁GHOST...
  • 濡備綍鍦↙inux涓浠,鎭㈠鍜杩佺ЩDocker瀹瑰櫒
    绛旓細鎴戜滑鎬庢牱鎵嶈兘鍦↙inux涓浠銆鎭㈠鍜杩佺ЩDocker瀹瑰櫒鍛紵杩欓噷涓烘偍鎻愪緵浜嗕竴浜涗究鎹风殑姝ラ銆1. 澶囦唤瀹瑰櫒 棣栧厛锛屼负浜嗗浠紻ocker涓殑瀹瑰櫒锛屾垜浠細鎯崇湅鐪嬫垜浠兂瑕佸浠界殑瀹瑰櫒鍒楄〃銆傝杈炬垚璇ョ洰鐨勶紝鎴戜滑闇瑕佸湪鎴戜滑杩愯鐫Docker寮曟搸锛屽苟宸插垱寤轰簡瀹瑰櫒鐨凩inux鏈哄櫒涓繍琛 docker ps 鍛戒护銆俤ocker ps Docker Containers List 鍦...
  • 濡備綍鍦↙inux涓浠,鎭㈠鍜杩佺ЩDocker瀹瑰櫒
    绛旓細1. 澶囦唤瀹瑰櫒 棣栧厛锛屼负浜嗗浠紻ocker涓殑瀹瑰櫒锛屾垜浠細鎯崇湅鐪嬫垜浠兂瑕澶囦唤鐨瀹瑰櫒鍒楄〃銆傝杈炬垚璇ョ洰鐨勶紝鎴戜滑闇瑕佸湪鎴戜滑杩愯鐫Docker寮曟搸锛屽苟宸插垱寤轰簡瀹瑰櫒鐨凩inux鏈哄櫒涓繍琛 docker ps 鍛戒护銆俤ocker ps Docker Containers List 鍦ㄦ涔嬪悗锛屾垜浠閫夋嫨鎴戜滑鎯宠澶囦唤鐨勫鍣紝鐒跺悗鍘诲垱寤鸿瀹瑰櫒鐨勫揩鐓с傛垜浠彲浠ヤ娇鐢 docker...
  • linux涓mysql濡備綍澶囦唤涓庢仮澶(mysql澶囦唤鍜屾仮澶鏁版嵁搴撳懡浠)
    绛旓細鎶婁互鍓嶅啓鐨勪竴涓彂浣犵湅鐪 鑴氭湰瑕佹眰锛氱紪鍐檚hell鑴氭湰锛屾瘡澶╁噷鏅1鐐瑰浠絫d_oa搴擄紝鍒癿ysql-back鐩綍锛屽苟灏嗗浠芥枃浠跺帇缂╋紝鍘嬬缉鍚嶇О涓哄浠界殑鏃ユ湡锛屽彧淇濈暀杩炵画涓冨ぉ鐨勫浠鏂囦欢 !/bin/bash mysql-uroot-p123456-e"flushtableswithreadlock;"閿佷綇琛 /usr/local/mysql/bin/mysqlmp-uroot-p123456td_oa--flush-...
  • 本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网