Docker入门:概念 镜像 容器 仓库 数据管理

时间<<--->>时间戳:进行时间计算时,需要利用转换的时间戳实现

date  +%Y%m%d  -d @148569820<<--->>date +s% -d ‘2016-11-16 16:00:00‘     --- 小 Q

----------------------------------------------------------------------------------------------------

Docker 概 念 

一个开源的应用容器引擎,让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

三个概念
1、镜像:一个只读的模板,类似于安装系统用到的iso文件镜像;

2、容器:如果镜像类似于操作系统,那容器就是虚拟机主本身,可被启动停止删除并互相隔离等;

3、仓库:存放镜像的一个仓库,最大的仓库hubhub.docker.com 国内最大dockerpool.com

安装

yum install -y epel-release   #centos6

yum install -y docker-io

/etc/init.d/docker start

yum install -y docker      #centos7

systemctl docker start

---------------------------------------------------------------------------------------------------

加速:https://cr.console.aliyun.com 注册,控制台左侧有加速按钮,找到自己的专属链接http:xxxxxxx

vim  /etc/sysconfig/docker  添加 other_args="--registry-mirror=https:xxxxxxxx"   重启docker即可

---------------------------------------------------------------------------------------------------

镜 像 管 理 

docker pull centos   //下载镜像

docker images     //查看本地拥有的镜像

docker tag centos  teng123   //复制镜像,并命名为teng123

docker tag centos  teng:teng   //复制镜像,并改了image和tag

docker tag image_id  name:tag  //更改镜像名,image_id是镜像id

docker search  image-name    //在从仓库中搜索image-name

docker rmi centos   //删除centos镜像,可以是centos:teng 指定tag镜像删除

docker run -itd centos --name=容器名 /bin/bash   //通过centos镜像打开指定名字的容器 -d是后台

docker run -it container_id bash   //进入容器,container_id即容器id,一般用下方式进入

docker exec -it container_id bash   //进入容器,跟上不同的是,退出容器时,容器仍旧运行

docker start container_id   //开启某个docker

docker ps -a  //查看所有的容器

docker ps   //查看正在运行的容器

docker run -it teng123 bash   &&  yum install -y httpd  //首先进入一个容器做一些更改

docker commit -m "change" -a "A" container_id  tengxun   //然后提交至新镜像,-a指定用户的名字

docker save -o teng.tar  teng123(或image_id)  //备份镜像成teng.tar文件

docker load < teng.tar 或docker load --input teng.tar  //还原teng.tar镜像文件

docker push image_name   //把自己的镜像上传到dockerhub,前提要有用户

容 器 管 理 

docker create -it centos  //创建容器但不启动

docker start container_id   //启动容器

docker run -i -t -d centos /bin/bash   //-i让容器标准输入打开-t分配伪终端-d后台运行

docker exec -it container_id  bash   //临时打开一个终端,exit退出后,容器不退出

docker attach container_id   //进入一个后台运行的容器,但一旦退出,容器也就退出了

docker logs container_id   //查看容器的运行历史信息

docker stop container_id   //停掉一直输出的内容

docker rm container_id    //删除某个容器

docker export container_id > file.tar //备份容器内容到file.tar

cat file.tar |docker import - teng_centos   //还原备份内容到新的镜像

命令 说明
import
.tar文件、容器.tar文件     容器还原镜像:cat file.tar |docker import - tengxun_test

export 容器导出 容器.tar文件   容器备份:docker  export  container_id  > file.tar
save   镜像保存 镜像.tar文件   镜像备份:docker save -o tengxun-centos.tar tengxun/centos (container_id或id号)
load  镜像.tar恢复 原来的镜像   镜像还原:docker load < tengxun-centos.tar

commit

镜像--->新镜像

仓 库 管 理 

docker pull registry

//registy为官方提供的镜像,我们可以用它来创建本地的docker私有仓库

docker run -d -p 5000:5000 registry

//以registry镜像启动容器监听5000端口  -p端口映射5000:5000=宿主机:docker容器

curl 127.0.0.1:5000

//可以访问它

实验:将镜像上传至私有仓库

1. docker tag teng_test  172.7.15.106:5000/centos //标记一下tag必须要带有私有仓库的ip:port
2. docker push 172.7.15.106:5000/centos   //此时报错了类似如下
Error response from daemon: invalid registry endpoint https://172.7.15.106:5000/v0/: unable to ping registry endpoint https://172.7.15.106:5000/v0/
v2 ping attempt failed with error: Get https://172.7.15.106:5000/v2/: EOF
v1 ping attempt failed with error: Get https://172.7.15.106:5000/v1/_ping: EOF. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 172.7.15.106:5000` to the daemon‘s arguments. In the case of HTTPS, if you have access to the registry‘s CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/172.7.15.106:5000/ca.crt

因为docker从1.3之后和docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,so.......

解决:启动docker时怎么加启动参数使之默认http访问

vim /etc/sysconfig/docker

把 $exec -d $other_args 改为
$exec -d --insecure-registry 172.7.15.106:5000 $other_args

systemctl restart docker  //重启docker

docker start registry_container_id   //重启动registry容器

curl http://172.7.15.106:5000/v2/_catalog    //查看私有仓库的镜像

数 据 管 理 

1、挂载本地目录到容器

docker run -itd -v /data:/data teng bash  //-v指定挂载,本地目录:容器目录,删除容器数据不会丢

测试:

docker run -itd -v /data/web/:/web teng bash
docker exec -it f621cf677

解决方式:退出容器,setenforce 0   #将selinux临时关闭,记得之后要开起来  setenforce 1
或者:chcon -Rt svirt_sandbox_file_t /home/docs   #添加规则,将目录加为白名单
或者:docker run -it --privileged=true -v /test:/soft centos bash   #--privileged以特权方式挂载

2、挂载数据卷

我们挂载目录时可以指定容器name,不指定就系统随机生成了;

docker run -itd --volumes-from jolly teng /bin/bash  //启用,--volumes-from启用数据卷选项

docker run -itd -v /data/:/mnt/ --name jolly [teng] bash  //挂载数据卷,自定义容器name

3、定义数据卷容器

有时我们需要多个容器之间共享数据,就可以搭建一个专门 数据卷容器(仅共享),供其他容器挂载

docker run -itd -v /data --name testvol teng bash   //新建,data是容器目录,非本地data

docker run -itd --volumes-from --name=web1 testvol teng   //新建其他容器并 挂载数据卷容器

4、数据卷的备份与恢复

原理:(三重保护)

其他容器/data/ 挂载----数据卷容器/data/ 挂载---宿主机的/data/

备份容器/data/ 挂载----数据卷的/data/---用cron将data目录打包,存放至/bak下

备份容器/bak/  挂载----宿主机的/bak

docker run -itd -v /data/ --name testvol2 teng /bin/bash   //新建数据卷容器

docker run -itd --volumes-from testvol2 teng /bin/bash    //挂载数据卷容器,可多个

docker run -itd -v /data/:/data/ testvol2  /bin/bash   //数据卷容器挂载至本地

docker run --volumes-from testvol2 -v /bak/:/bak/ teng tar cvf /bak/data.tar /data/

//新建容器,挂载到数据卷容器/bak目录,然后压缩/data/目录

docker run --volumes-from testvol2  -v /data/:/data teng tar xvf /bak/data.tar

//新建容器,挂载到数据卷容器/data目录,然后将压缩的data内容,解压至新容器

------------------------------------------------------------------------------------------------------

当然这篇博客只属于入门级的,深入研究请参考http://blog.opskumu.com/docker.html

时间: 2024-08-06 05:53:17

Docker入门:概念 镜像 容器 仓库 数据管理的相关文章

docker的镜像 容器 仓库

docker镜像与容器 ##docker 下载镜像 docker pull centos ##查看docker里有哪些镜像 docker image ##创建容器 docker run -p 8080:8080 -d centos [-d :后台运行 ]不加-d 会一直显示 只能另开终端stop掉[ -p :绑定本机端口和容器端] ##查看docker正在运行的容器 docker ps ##查看docker的运行日志 docker logs -f 容器id[-f :动态显示容器运行日志]不加-f

Docker入门-对镜像的操作

本章目录: 1.获取镜像 2.查看镜像信息 3.搜寻镜像 4.删除镜像 5.创建镜像 6.导出和载入镜像 7.上传镜像 1.获取镜像 镜像是容器运行的前提. 可以利用docker的pull命令从网络上下载镜像,命令格式: docker pull NAME[:TAG]. 对于docker镜像来说,如果不显式的指定TAG,则默认会选择latest标签,就是下载镜像库中最新的版本. 下面演示的是从Docker Hub的Ubuntu仓库下载一个最新的Ubuntu操作系统的(不指定版本,默认为latest

docker入门之镜像管理基础

docker镜像管理基础 首发:arppinging 一.镜像概述 1.1 联合挂载 在之前的文章我们提到过,容器是基于镜像启动的,镜像的存储驱动是overlay2 overlayFS将单个Linux主机上的两个目录合成一个目录,这些目录称为层,统一过程被称为联合挂载. 下图是一个docker镜像和docke容器的分层图,docker镜像是lowdir,docker容器是upperdir.而统一的视图层是merged层.如果一个镜像有多层的话,那么它的启动过程需要进行联合挂载,如下图,cento

Docker入门学习2 ——容器基本操作

摘要:介绍Docker容器相关的操作命令. 知识点: run ps start attach exec top stop kill inspect rm logs images rmi pull push commit build 注:可以使用docker COMMAND --help来查看COMMAND的详细用法,本文只介绍常用的子集. 一.启动容器 启动之前未启动过的容器: docker run [-d] [-i] [-t] IMAGE [Command] [Arguments] · -d:

docker 批量删除 镜像 容器

我们在docker构建和测试时,经常会产生很多无用的镜像或者容器,我们可用如下两条命令一个一个删除. docker container rm 容器id #删除容器 docker image rm 镜像ID #删除镜像 但是,还可以借助这两个获取容器ID和镜像ID的命令实现批量删除 获取容器ID列表: docker container ls -a -q 获取镜像ID列表: docker image ls -a -q 最终实现批量删除命令 批量删除容器: docker container rm $(

Docker核心概念

Docker的三大核心概念 镜像 容器 仓库 1.Docker镜像 Docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统.镜像是创建容器的基础.通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并通过简单的命令就可以直接使用. 2.Docker容器 Docker容器类似于一个轻量级的沙箱(沙箱是一个虚拟的环境,在这份环境运行的程序都是独立的,不会对你的现用操作系统造

Docker安装及镜像管理

1.docker简介 容器虚拟化,比传统虚拟化轻量 2013年出现,发展非常迅猛 Redhat在6.5版本开始支持docker 使用GO语言开发,基于apache2.0协议 开源软件,项目代码在github维护 2.容器虚拟化和传统虚拟化比较 3.Docker的优势 启动非常快,秒级实现 资源利用率很高,一台机器可以跑上千个docker容器 更快的交付和部署,一次创建和配置后,可以在任意 地方运行 内核级别的虚拟化,不需要额外的hypevisor支持,会有更高的性能和效率 易迁移,平台依赖性不强

docker入门基础(一)

目录 一.简介 1.docker架构 2.docker的概念 二.docker的安装和管理 1.docker安装 2.docker配置阿里云镜像加速 3.基础命令 一.简介 参考 https://www.cnblogs.com/linuxk/p/8984242.html 1.docker架构 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器. Docker 容器通过 Docker 镜像来创建. 容器与镜像的关系类似于面向对象编程中的对象与类. D

docker入门-安装篇

一.docker介绍 1:docker官网 www.docker.com 2:github  https://github.com/docker/docker.github.io 3:开源的容器引擎,可以让开发者打包应用以及依赖的库,然后发布到任何流行的linux发行版上,移植很方便由go语言编写,基于apache2.0协议发布,基于linux kernel,要想在win下运行需要借助一个vm(虚拟机)来实现 ,自2013年开始,近些年发展迅猛,docker从1.13x开始,版本分为社区版ce和