(2)docker容器管理、仓库管理、数据管理恢复

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介:

docker容器管理

启动一个容器:
[root@centos7 ~]# docker run -itd centos-7-x86_64-minimal bash
3f2af7aa89ad0a21e993f5ff1ab76434461a39ee604d39c787dd79c8990970b9
连接进入容器:
[root@centos7 ~]# docker exec -it 3f2af7aa89ad bash
[root@3f2af7aa89ad /]#

用exec进入容器退出时,该容器还在启动中
docker attach 3f2af7aa89ad bash
用attach进入退出时,该容器会关闭

删除docker容器:
-f 强制删除
[root@centos7 ~]# docker rm -f df588614d5d4

容器导出

[root@centos7 ~]# docker export 3f2af7aa89ad > jack.tar

导入容器

[root@centos7 ~]# cat jack.tar |docker import - centos-jack

(2)docker容器管理、仓库管理、数据管理恢复

Docker仓库管理

下载registry镜像,registy为docker官方提供的一个镜像,我们可以用它来创建本地的docker私有仓库。
[root@centos7 ~]# docker pull registry
(2)docker容器管理、仓库管理、数据管理恢复

(2)docker容器管理、仓库管理、数据管理恢复

[root@centos7 ~]# docker run -d -p 5000:5000 registry
##以registry进行启动容器,监听5000端口
##-p:表示做一个端口映射,左边是宿主机端口,右边是容器端口
[root@centos7 ~]# curl 127.0.0.1:5000 -I
HTTP/1.1 200 OK
Cache-Control: no-cache
Date: Thu, 14 Dec 2017 06:56:08 GMT
Content-Type: text/plain; charset=utf-8

进入该容器
[root@centos7 ~]# docker exec -it 8cd992133204 /bin/sh

上传镜像到私有仓库
registry库的IP:172.17.0.2
准备一个镜像
[root@centos7 ~]# docker pull busybox
(2)docker容器管理、仓库管理、数据管理恢复

上传之前需要对镜像打上标记:
[root@centos7 ~]# docker tag busybox 192.168.3.74:5000/busybox
##标记内容必须带有私有仓库的ip:port(宿主机的IP和port)

上传镜像:
[root@centos7 ~]# docker push 192.168.3.74:5000/busybox

报错:
(2)docker容器管理、仓库管理、数据管理恢复

解决:
编辑”/etc/docker/“目录下”daemon.json“文件:
[root@centos7 ~]# vi /etc/docker/daemon.json

{ "insecure-registries":["192.168.3.74:5000"] }

[root@centos7 ~]# systemctl restart docker
启动registry容器:
[root@centos7 ~]# docker start 8cd992133204
8cd992133204

[root@centos7 ~]# docker push 192.168.3.74:5000/busybox
The push refers to a repository [192.168.3.74:5000/busybox]
0271b8eebde3: Pushed 
latest: digest: sha256:91ef6c1c52b166be02645b8efee30d1ee65362024f7da41c404681561734c465 size: 527

查看:
[root@centos7 ~]# curl http://192.168.3.74:5000/v2/_catalog
{"repositories":["busybox"]}

docker数据管理

如果只把数据存储到docker容器中,只有保存镜像的时候才能将数据保存起来,否则数据会随着容器的停止/删除而丢失,为了防止容器中的数据丢失使用如下方法:将宿主机中的目录挂载到容器中,容器中的数据就会保存在宿主机对应的目录中,不会因为你容器的关闭和删除而丢失。

挂载本地目录到容器
[root@centos7 ~]# docker run -itd -v /data/docker/:/data1/ centos bash
##-v:指定挂载目录
##/data/docker/:为宿主机中的目录
##/data1/:为docker容器中的目录,可以不用创建,会自动生成

[root@1d46e83e12fb /]# cat /data1/test.txt 
123

挂载数据卷

挂载目录的时候,可以指定容器name,如果不指定就随机定义了。可以使用命令docker ps查看最右侧一列,使用该name实现数据卷的挂载。

1、启动容器并挂载目录:
[root@centos7 ~]# docker run -itd -v /data/docker/:/data1/ centos bash
3d151cb654313d392c017a26d27eae6a2af75359f01bb6d1b3f410eb392851e2

2、查看最后的NAMES
[root@centos7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d151cb65431 centos "bash" 27 seconds ago Up 27 seconds elated_clarke

3、再启动一个容器,同时挂载数据卷:
[root@centos7 ~]# docker run -itd --volumes-from elated_clarke centos-7-x86_64-minimal bash
5a7a53579fcdf08d0f0280de0340dde83f0be25a4421db1819641a875b5314f0

4、进入刚启动的容器
[root@centos7 ~]# docker exec -it 5a7a bash
可以查看到共享的目录
[root@5a7a53579fcd /]# ls data1/
test.txt

所谓挂载数据卷,即多个docker容器使用同一个宿主机中的挂载目录,该方法便于web容器的数据共享

定义数据卷容器

把容器作为数据卷来使用(即,使一个容器扮演宿主机中“/data/docker/"目录的角色)
有时候,我们需要多个容器之间相互共享数据,类似于linux里面的NFS,所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。

建立数据卷容器:
[root@centos7 ~]# docker run -itd -v /data/docker/ --name centos_testvol centos bash
df7cf785158abb238d2f77451463000590ac64ad77babfda2cf13cab1eaf858e
##-v:指定挂载目录(/data/docker/为本地目录)
##--name:指定容器名称

查看容器信息:
[root@centos7 ~]# docker exec -it df7cf7851 bash
[root@df7cf785158a /]# ls /data/docker/
##这里的 /data/docker/ 不是指的主机中的 /data/docker/目录,两者没有关联

该数据卷容器的作用是使其他容器来共享数据,数据卷容器中的数据无法直接存储到母机。

挂载数据卷
[root@centos7 ~]# docker run -itd --volumes-from centos_testvol --name=test centos bash
4a1c066b524926c9c47da80c1ef11ee8b4322f666a355285768d78be14edbfce
[root@centos7 ~]# 
[root@centos7 ~]# docker exec -it 4a1c066b bash
[root@4a1c066b5249 /]# ls /data/docker/
test.txt

以上成功挂载

数据卷的备份与恢复

备份
新建容器并挂载数据卷和本地目录:
[root@centos7 ~]# docker run -itd --volumes-from centos_testvol -v /data/vol_data_backup/:/backup centos bash
651fdcce3b6707b77727f76919df46b0b3e8f3ea131257670ffd409af5c75d34

[root@centos7 ~]# docker exec -it 651fdcce bash
[root@651fdcce3b67 /]# ls /backup/
[root@651fdcce3b67 /]# ls /data/docker
test.txt

打包数据卷目录/data/docker/:
[root@651fdcce3b67 /]# tar cvf /backup/docker.tar /data/docker/ 
tar: Removing leading `/' from member names
/data/docker/
/data/docker/test.txt

退出容器,查看本地挂载目录:
[root@centos7 ~]# ls /data/vol_data_backup/
docker.tar

说明: 在此新建的该容器功能类似于“跳板机”,即,将该容器同时挂载到数据卷容器和本地目录,然后在该“跳板机”容器中打包数据卷容器中的数据放到本地目录中,以达到备份的目的。

恢复

(2)docker容器管理、仓库管理、数据管理恢复










本文转自 iekegz 51CTO博客,原文链接:http://blog.51cto.com/jacksoner/2050664,如需转载请自行联系原作者
相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
23 2
|
3天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
4天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
5天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
5天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
5天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
7天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
7天前
|
NoSQL Redis Docker
【赵渝强老师】使用Docker Compose管理容器
Docker Compose 通过 YAML 文件管理多个容器,简化复杂系统的部署和管理。本文介绍了 Docker Compose 的基本概念,并通过一个包含 Redis DB 和 Python Web 模块的示例,展示了如何使用 Docker Compose 部署和管理多容器应用。手动部署和 Docker Compose 部署的对比突显了 Docker Compose 在系统复杂度增加时的优势。
|
JSON Shell Linux
docker学习(四)--仓库
docker中仓库使用
692 0

相关产品

  • 容器服务Kubernetes版