(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,如需转载请自行联系原作者
相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
20天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
165 77
|
28天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
1天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
60 35
|
6天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
50 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
3天前
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
46 19
|
12天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
37 3
实战~如何组织一个多容器项目docker-compose
|
6天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
26 4
|
21天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
73 3
|
3月前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
210 56
|
2月前
|
安全 Shell Linux
docker进入容器命令
docker进入容器命令

相关产品

  • 容器服务Kubernetes版