Docker

Docker概念:

        

  •  Docker 是一个开源的应用容器引擎,诞生于2013年初,基于 Go 语言 并遵从Apache2.0协议开 源。
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任 何流行的
  • Linux 机器上,也可以实现虚拟化
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)
  • 更重要的是容器性能开销极低。

小结:docker是一种容器技术,解决软件跨环境迁移的问题

Docker应用场景: 

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

LXC(linux container)与dockers关系

  • Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和控制资源分配
  • Docker并不是LXC的替代品,Docker的底层就是使用了LXC来实现的。LXC将Linux进程沙盒化,使得进程之间 相互隔离,并且能够控制各进程的资源分配。
  • 在LXC的基础之上,Docker提供了一系列更强的功能。 Linux容器(lxc) linux container(namespaces命名空间 隔离环境 及cgroups资源限制) cgroups 限制一个进程能够使用的资源 cpu 内存 硬盘 IO kvm虚拟机: 资源限制(1核 1G 20G)

容器的核心技术:

容器的核心技术是 Cgroup + Namespace

容器 = cgroup + namespace + rootfs + 容器引擎

• Cgroup: 资源控制

• namespace: 访问隔离

• rootfs:文件系统隔离。镜像的本质就是一个rootfs文件 • 容器引擎:生命周期控制

Docker中的三个基本概念

  • Image(镜像) ---IOS
  • Container(容器) ---镜像运行
  • Repository(仓库)

镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是 Docker 的核心。

容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务

Docker引擎

docker引擎是一个c/s结构的应用,

主要组件:

 • Server是一个常驻进程

• REST API 实现了client和server间的交互协议

• CLI 实现容器和镜像的管理,为用户提供统一的操作界 

Docker安装

环境准备:

由于 Docker-CE 支持 64 位版本的 CentOS 7 ,并且要求内核版本不低于 3.10

进行检查命令:

在进行安装之前,我们先删掉其旧版本 

命令:yum remove docker

安装依赖包:

[root@model ~]# yum install -y yum-utils device-mapper-persistent-data vm2

安装docker:

root@gitlab-server harbor]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#注 意源 [root@gitlab-server yum.repos.d]# sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/ yum.repos.d/docker-ce.repo

查看安装版本:

安装docker-ce ,社区版

查看docker版本 

启动docker-ce 

显示docker镜像信息以及容器数量 

Docker进程相关命令

启动 docker 服务 :systemctl start docker

停止 docker服务 :systemctl stop docker

重启 docker 服务 :systemctl restart docker

查看 docker 服务状态: systemctl status docker

开机启动 docker 服务: systemctl enable docker

配置镜像加速器:

 

在进行一下命令,守护线程,重启docker

Docker镜像相关命令:

查看镜像:查看本地所有的镜像 docker images

docker images -q # 查看所用镜像的id

搜索镜像:从网络中查找需要的镜像 docker search 镜像名称

拉取镜像 :从Docker仓库下载镜像到本地,镜像名称格式为名称 :版本号,如果不指定则是最新的版 本,如果不知道 镜像版本,可以去 docker hub搜索对应的镜像查看

docker pull 镜像名称

删除镜像:删除本地镜像 docker rmi 镜像id # 删除指定本地镜像

docker rmi 'docker images -q' # 删除所有本地镜像

镜像导出:[root@model ~]# docker save docker.io/nginx:latest>docker_nginx.tar.gz

镜像导入:[root@model ~]# yum -y install bash-completion ##智能补齐

                  [root@model ~]# docker load -i docker_nginx.tar.gz                                        

                  [root@model opt]# docker image load -i docker_nginx.tar.gz

Docker容器相关命令:

创建启动镜像:

 run (创建并运行一个容器)

-d 后台

-p 端口映射

-v 源地址( 宿主机):目标地址(容器) nginx 镜像的名字

查看容器:可以看得到就有刚刚我们在上面启动的nginx镜像

 访问nginx

查看容器: 

启动容器: 可以看到上面的tomcat2有关闭变成启动了

 删除容器:

删除所有容器:docker rm `docker ps -a -q`

关闭容器: 

 进入某个容器:注意的是只有当启动运行的时候,才能进入它内部

 容器的数据卷:

数据卷的作用及概念:

问题一:docker容器删除后,容器的数据还在吗?

问题二:docker容器和外部机器可以直接交换文件吗?

问题三:容器之间如何进行数据交换?

这些问题接下来,下面的图片可以清晰明了地告诉你们: 

数据卷: 

  • 数据卷是宿主机中的一个目录或文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
  • 一个数据卷可以被多个容器挂载
  • 一个容器也可以挂载多个数据卷

   

 数据卷的作用

  • 容器数据持久化
  • 外部机器和容器间接通信
  • 容器之间数据交换 

数据卷容器

多容器进行数据交换

1. 多个容器挂载同一个数据卷

2. 数据卷容器 

docker小总结: 

docker其实就是一种容器技术,解决软件跨环境迁移的问题,我们软件有几个环境,分别是开发环境,测试环境以及生产环境,在没有使用docker之前,开发环境需要将应用达成war先交由测试环境测试,再交由生产环境,这期间会产各种意想不到的问题,“水土不服”,而docker容器就很好解决这个问题,将开发者的应用以及各种依赖包放到一个轻量级,可移植的容器中,然后就可以在各个环境中很好进行测试,很好解决软件跨环境的问题。

         docker的三大组件就是镜像(image),容器(container),仓库(repository)

镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是 Docker 的核心。

容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。容器的核心技术就Cgroup资源控制,以及namespace进程隔离。

Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值