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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 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,如需转载请自行联系原作者
目录
相关文章
|
10天前
|
NoSQL 关系型数据库 Redis
Docker的通俗理解和通过宿主机端口访问Redis容器的实例
本文目标:引导初学者入门Docker,理解镜像、容器和宿主机概念,学习常用Docker命令,特别是如何创建并从Redis容器通过宿主机端口访问。 关键点: - Docker核心:镜像(类)、容器(实例)、宿主机(运行环境)。 - `docker pull` 拉取镜像,如 `redis:3.0`。 - `docker run -d --name` 后台运行容器,如 `my-redis`。 - `-p` 参数做端口映射,如 `6379:6379`。 - `docker exec -it` 交互式进入容器,如 `bash` 或执行命令。
|
10天前
|
Kubernetes 监控 Docker
Docker Compose与Kubernetes的比较
【6月更文挑战第11天】本文探讨了Docker Compose与Kubernetes在容器编排中的角色。Docker Compose适合简单部署和开发环境,提供一键启动多容器的便利;而Kubernetes则适用于大规模生产环境,具备自动化运维、集群管理和负载均衡等功能。Python在容器编排中扮演重要角色,示例代码展示了如何使用Python的Docker SDK和Kubernetes客户端进行部署、扩展和日志管理。通过Python,开发者可以实现自定义监控、自动水平扩展和实时日志监控等高级功能,增强了容器编排的灵活性和自动化。
33 1
Docker Compose与Kubernetes的比较
|
7天前
|
前端开发 安全 数据库
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
|
4天前
|
NoSQL Redis Docker
使用 Docker Compose 接管现有容器的文档
使用 Docker Compose 接管现有容器的文档
17 2
|
6天前
|
Cloud Native 安全 Docker
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
|
4天前
|
存储 关系型数据库 MySQL
解读 MySQL 容器信息:`docker inspect` 字段详解
解读 MySQL 容器信息:`docker inspect` 字段详解
23 1
|
4天前
|
存储 测试技术 Linux
Docker技术仓库
本文详细介绍了Docker中数据卷的作用、特点、管理方式,包括bindmounts和volumes挂载、Dockerfile中的数据卷使用、Docker仓库(公有与私有)以及DockerCompose在多容器应用中的应用。
|
7天前
|
Linux Docker 容器
蓝易云 - net.ipv4.ip_forward=0导致docker容器无法与外部通信
完成以上步骤后,Docker容器应该能够正常与外部通信了。
10 2
|
7天前
|
Docker 容器
蓝易云 - Docker中容器的随机命名方式
例如,一个自动生成的容器名称可能是"happy_einstein"。这种随机命名方式既保证了容器名称的唯一性,又增加了一些趣味性。
13 2
|
10天前
|
监控 Java 数据安全/隐私保护
性能监控之 JMX 监控 Docker 容器中的 Java 应用
【6月更文挑战9天】性能监控之 JMX 监控 Docker 容器中的 Java 应用
37 1

相关产品

  • 容器服务Kubernetes版