docker容器管理、仓库管理、数据管理、数据卷备份与恢复
文章目录
docker容器管理
通过镜像创建容器:
[root@linux01 ~]# docker images #查看镜像 REPOSITORY TAG IMAGE ID CREATED SIZE centos_net latest f9dba795f884 23 hours ago 261MB centos latest 0f3e07c0138f 3 months ago 220MB [root@linux01 ~]# docker create -it centos #通过镜像创建容器 70258aa8d970f74ae6091b5bdd6b903d10ffc04f00ec017721080dee824ca27f [root@linux01 ~]# docker ps -a #新创建的容器未启动,需要使用-a参数查看 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 70258aa8d970 centos "/bin/bash" 9 seconds ago Created crazy_spence 5de45f45421c centos "bash" About a minute ago Up About a minute heuristic_burnell
启动容器:
[root@linux01 ~]# docker start 70258aa8d970 70258aa8d970
启动容器后即可通过docker ps查看:
[root@linux01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 70258aa8d970 centos "/bin/bash" 11 minutes ago Up 18 seconds crazy_spence 5de45f45421c centos "bash" 12 minutes ago Up 12 minutes heuristic_burnell
说明:前两步创建+启动容器,相当于docker run直接启动镜像为容器的操作
启动镜像为容器时,自定义容器名test:
[root@linux01 ~]# docker run --name test -itd centos 78428f0ce95caf4ccfd64d63b9c30347356c9183b4d09e9ca5301565028355ae [root@linux01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 78428f0ce95c centos "/bin/bash" 2 seconds ago Up 1 second test 70258aa8d970 centos "/bin/bash" 18 minutes ago Up 7 minutes crazy_spence 5de45f45421c centos "bash" 19 minutes ago Up 19 minutes heuristic_burnell
#最后一列names容器名已生效
通过docker run -d可以指定容器在后台运行命令:
[root@linux01 ~]# docker run -d centos bash -c "echo 12345" 194012d0499b1ef87d51aeb50fc0a2caa3cf5a5ada9092de0bfae87da0b0a659 [root@linux01 ~]# docker logs 194012d 12345
#docker logs 加容器id 即可查看容器执行的命令,执行完后自动关闭
执行完命令后直接删除容器:
[root@linux01 ~]# docker run --rm -it centos bash -c "sleep 30"
进入容器:
[root@linux01 ~]# docker attach 78428f0ce95c
#最后面为容器id,以这种方式进入容器后,exit退出会直接关闭容器,如退出时不想关闭容器先按ctrl+p,再按ctrl+q的方式退出即可
进入容器的第二种方式:
[root@linux01 ~]# docker exec -it 78428f0ce95c bash
#以这种方式进入容器后,exit退出后,容器依然在运行,不会关闭
删除容器:
[root@linux01 ~]# docker rm -f 78428f0ce95c
#删除正在运行的容器,需要使用-f参数强制删除,未运行的容器直接使用rm即可
导出容器:
[root@linux01 ~]# docker export 70258aa8d970 > test.tar
导入容器:
[root@linux01 ~]# cat test.tar |docker import - test sha256:711b6c0f252950c19ad6dfb48c66385f6a2066584ec11271add77186a61b2bfc [root@linux01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test latest 711b6c0f2529 8 seconds ago 220MB centos_net latest f9dba795f884 24 hours ago 261MB centos latest 0f3e07c0138f 3 months ago 220MB
#导入后变为镜像,test为自定义镜像名称
docker私有仓库搭建
下载registry 镜像:
[root@linux01 ~]# docker pull registry
以registry镜像启动容器:
[root@linux01 ~]# docker run -d -p 5000:5001 registry
#-p参数:将容器的5001端口映射到宿主机的5000端口,其他机器访问宿主机的5000端口即可访问到私有仓库(端口为自定义,只需要与宿主机映射即可)
上传镜像到私有仓库前需要更改镜像名:
[root@linux01 ~]# docker tag centos 192.168.234.128:5000/centos [root@linux01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos_net latest f9dba795f884 25 hours ago 261MB 192.168.234.128:5000/centos latest 0f3e07c0138f 3 months ago 220MB centos latest 0f3e07c0138f 3 months ago 220MB registry latest f32a97de94e1 10 months ago 25.8MB
#命名方式:宿主机+端口+镜像名
编辑配置文件:
[root@linux01 ~]# vi /etc/docker/daemon.json
配置文件内容:
{ "registry-mirrors": ["https://jmnbijcd.mirror.aliyuncs.com"], "insecure-registries":["192.168.234.128:5000"] }
#指定宿主机ip和端口,如果没有配置阿里云加速器,直接添加{ “insecure-registries”:[“192.168.234.128:5000”] }即可
重启docker服务并启动所有容器:
[root@linux01 ~]# systemctl restart docker && docker start $(docker ps -a -q)
推送镜像到私有仓库:
[root@linux01 ~]# docker push 192.168.234.128:5000/centos
查看私有仓库中的镜像:
[root@linux01 ~]# curl 127.0.0.1:5000/v2/_catalog {"repositories":["centos"]}
#推送的centos已显示
在其他主机拉取镜像,需要先编辑配置文件:
[root@linux02 ~]# vi /etc/docker/daemon.json
配置文件内容:
{ "insecure-registries":["192.168.234.128:5000"] }
重启docker服务:
[root@linux02 ~]# systemctl restart docker
拉取私有仓库镜像:
[root@linux02 ~]# docker pull 192.168.234.128:5000/centos [root@linux02 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.234.128:5000/centos latest 0f3e07c0138f 3 months ago 220MB
docker数据管理
挂载本地的目录到容器中:
[root@linux01 ~]# docker run -itd -v /data/docker_data/:/data --name test centos bash
说明:以centos镜像创建启动一个容器test,将宿主机/data/docker_data目录挂载到容器中的/data目录,这样在宿主机或者容器中对目录做修改,都会同步,在未做挂载的情况下,容器关闭数据就会丢失,该容器可以称为数据卷容器
挂载数据卷:
[root@linux01 ~]# docker run -itd --volumes-from test centos bash
说明:此步操作的意思就是以centos镜像一个新的容器,该容器挂载上一步创建的名为test容器的/data目录,类似linux中的NFS,将test容器的/data目录共享,映射到新创建的容器的/data目录
单独建立数据卷容器:
[root@linux01 ~]# docker run -itd -v /data --name a1 centos bash ddc0ed075684367242df708899e92512ed8f2975cadcbf21411f5a787b089972
#将容器的/data目录设为共享的
挂载数据卷:
[root@linux01 ~]# docker run -itd --volumes-from a1 centos bash d1786f388963e2dd2818b3d7415cbfa5e8d3fe612c557e804b3fbe1cc386e470
#以centos镜像创建一个新容器,将上一步创建的数据卷容器的共享目录/data映射到该容器的/data目录
数据卷备份与恢复
当数据卷容器挂载了宿主机目录时,不需要进行备份,只需要单独备份宿主机对应的挂载目录即可,但是当容器为独立的数据卷时,需要对其进行备份
备份
假设已经创建好了一个独立数据卷容器名为t1,备份该容器的数据卷目录(data):
1.在宿主机创建备份文件存放目录:
mkdir /data/backup
2.备份:
docker run --volumes-from t1 -v /data/backup/:/backup centos tar cvf /backup/data.tar /data/
说明:执行该命令即可开始备份,意思是以centos镜像创建一个新的容器,新的容器映射到数据卷容器t1,实现t1的数据目录(data)共享,并且宿主机的/data/backup目录已经挂载到新容器的/backup目录,所以新容器打包/data目录到/backup下,即可实现同步数据卷容器的共享目录到宿主机的备份目录
示意图:
恢复
创建数据卷容器t2,再建一个新的容器并挂载该数据卷容器,然后再把tar包解包
新建数据卷容器:
docker run -itd -v /data/ --name t2 centos bash
新建容器挂载数据卷,并解包:
docker run --volumes-from t2 -v /data/backup/:/backup centos tar xf /backup/data.tar
- 点赞 1
- 收藏
- 分享
- 文章举报
- (2)docker容器管理、仓库管理、数据管理恢复
- MYSQL常用操作(二),MYSQL用户管理,数据备份恢复
- MySQL管理之数据备份及恢复 推荐
- Oracle数据库日常管理之数据备份,恢复及迁移 (第二讲 )
- MySQL管理之数据备份及恢复
- Oracle数据库日常管理之数据备份,恢复及迁移 (第二讲 )
- MongoDB 数据备份、恢复与迁移管理
- Oracle数据库日常管理之数据备份,恢复及迁移 (第六讲 )
- Redis基础学习--持久化(数据备份与恢复)、复制、安全、通信协议、管理工具
- Oracle数据库日常管理之数据备份,恢复及迁移 (第五讲 )
- Oracle数据库日常管理之数据备份,恢复及迁移 (第一讲 )
- MongoDB数据库管理数据备份恢复
- Oracle数据库日常管理之数据备份,恢复及迁移 (第八讲 )
- 用户授权及撤销 、 数据备份与恢复 、 MySQL管理工具
- 《06. oracle 数据管理--导入&导出&备份&恢复》
- Docker 容器数据管理:挂载、备份、恢复
- 【Docker容器的数据管理】-【Docker数据卷的备份和还原】- 数据卷备份
- Oracle数据库日常管理之数据备份,恢复及迁移 (第九讲 )
- MySQL(用户管理,常用sql语句,数据库备份恢复,MySQL调优,恢复误操作数据)
- Oracle数据库日常管理之数据备份,恢复及迁移 (第九讲 )