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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

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,如需转载请自行联系原作者
目录
相关文章
|
26天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Docker和Kubernetes的实践指南
【2月更文挑战第30天】 在当今快速发展的云计算时代,传统的IT运维模式已难以满足业务的敏捷性和稳定性需求。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理工具构建一个高效、可靠的自动化运维体系。文章首先概述了容器化技术和微服务架构的基本概念,随后详细阐述了基于Docker的应用打包、部署流程,以及Kubernetes在自动化部署、扩展和管理容器化应用中的关键作用。最后,文中通过案例分析,展示了如何在实际场景中利用这些技术优化运维流程,提高系统的整体效率和可靠性。
|
1月前
|
开发者 Docker Python
深入浅出:使用Docker容器化部署Python Web应用
在当今快速发展的软件开发领域,Docker作为一个开放平台,为开发者提供了将应用打包在轻量级、可移植的容器中的能力,从而简化了部署和管理应用程序的复杂性。本文将通过一个简单的Python Web应用示例,引导读者理解Docker的基本概念、容器化的优势以及如何使用Docker来容器化部署Python Web应用。我们将从零开始,逐步探索创建Dockerfile、构建镜像、运行容器等关键步骤,旨在为读者提供一个清晰、易于理解的指南,帮助他们掌握使用Docker容器化部署应用的技能。
|
15天前
|
Kubernetes 监控 数据安全/隐私保护
K8s好看的管理页面Rancher管理K8S
K8s好看的管理页面Rancher管理K8S
33 4
|
4天前
|
JSON Kubernetes Go
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
14 0
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
|
17天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的最佳实践
在现代云计算环境中,自动化运维成为保障系统稳定性与提升效率的关键。本文深入探讨了如何利用Docker容器化技术和Kubernetes容器编排工具构建一个高效、可靠的自动化运维体系。文中不仅介绍了相关的技术原理,还结合具体案例分析了实施过程中的常见问题及解决方案,为读者提供了一套行之有效的最佳实践指南。
|
27天前
|
网络协议 网络安全 Docker
docker离线搭建仓库
docker离线搭建仓库
36 4
|
27天前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【2月更文挑战第29天】在当今快速发展的软件开发领域,微服务架构已成为提高系统可维护性、扩展性和敏捷性的关键解决方案。本文将深入探讨如何利用Docker容器化技术和Kubernetes集群管理工具,共同构建一个既高效又可靠的微服务环境。我们将分析Docker和Kubernetes的核心功能,并展示它们如何协同工作以简化部署流程、增强服务发现机制以及实现无缝的服务伸缩。通过实际案例分析,本文旨在为开发者提供一套实用的微服务架构设计和实施指南。
|
27天前
|
Kubernetes Cloud Native Devops
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
49 1
|
28天前
|
Kubernetes API Docker
Docker+K8s基础(重要知识点总结)
Docker+K8s基础(重要知识点总结)
52 0
|
1月前
|
数据管理 应用服务中间件 nginx
Docker卷和数据管理
Docker卷和数据管理
15 1

相关产品

  • 容器服务Kubernetes版