docker的持续集成

文章目录[x]
  1. 1:一大段废话
  2. 1.1:docker优势:
  3. 1.2:Docker基本概念
  4. 2:CentOS 下安装Dokcer
  5. 2.1:前提
  6. 3:Docker安装MySQL

一大段废话

虚拟机:传统虚拟机技术是虚拟出一一套硬件后, 在其上运行-个完整操作系统,在该系统上再运行所需应用进程;

docker:而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

docker优势:

更高效的利用系统资源
●由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销, Docker对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
更快速的启动时间
●传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
一致的运行环境
●开发过程中一个常见的问题是环境一 致性问题。由于开发环境、测试环境、生产环境不-致,导致有些bug并未在开发过程中被发现。而Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现「这段代码在我机器 上没问题啊」这类问题。

更轻松的维护和扩展
●Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进-步扩 展镜像也变得非常简单。
●此外, Docker团队同各个开源项目团队-起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

Docker基本概念

●镜像Image
●容器Container
●仓库Repository

Docker镜像

●Docker 镜像( Image) , 就相当于是一个root文件系统。比如官方镜像ubuntu:18.04 就包含了完整的- -套Ubuntu 18.04最小系统的root 文件系统。
●Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一-些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
●镜像构建时,采用分层存储,会- -层层构建,前一层是后一层的基础。每-层构建完就不会再发生改变,后- -层上的任何改变只发生在自己这- -层。
●分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

Docker容器

●镜像( lmage )和容器( Container )的关系,就像是面向对象程序设计中的类和实例- -样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
●容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID空间。
●容器内的进程是运行在一 个隔离的环境里,使用起来,就好像是在一 个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

Docker仓库

●一个集中的存储、分发镜像的服务
●一个Docker Registry中可以包含多个仓库Repository ;每个仓库可以包含多个标签Tag ;每个标签对应-一个镜像。
●一个仓库会包含同一一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签

Docker Registry私有服务

用户可以在本地搭建私有Docker Registry。Docker 官方提供了Docker Registry镜像,可以直接使用做为私有Registry 服务。
除了官方的Docker Registry外,还有第三E方软件实现了Docker Registry API ,甚至提供了用户界面以及一些高级功能。 比如, VMWare Harbor和Sonatype Nexus.

 

 

CentOS 下安装Dokcer

前提

●操作系统必须是稳定版、不允许为测试版
●必须启用centos egtras存储库。默认情况下,此存储库已启用,但如果已禁用,则需要重新启用它。建议使用overlay2存储驱动程序。

 

卸载旧版本的Docker(如果已经安装了)

$ sudo yum remove docker docker-common docker-selinux docker-engine

 

镜像、容器、自定义配置文件等并不会随着Docker的卸载自动删除,你需要执行一下命令手动删除
rm -rf /var/lib/docker

 

安装依赖的软件包

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 

设置yum源

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

可以查看所有仓库中所有docker版本,并选择特定版本安装

$ yum list docker-ce --showduplicates | sort -r

 

安装docker

$sudo yum makecache fast(刷新源)

$sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0

$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce

 

启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

$ docker version

 

Docker安装MySQL

需要用到docker pull拉取镜像

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

eg:

docker pull mysql:5.7(默认docker官网下载,还可以从阿里云下载)

 

查看帮助文档
docker pull -help

 

说明
Docker镜像仓库地址:地址的格式- -般是<域名/IP>[:端口号]。默认地址是Docker Hub

 

运行mysql镜像

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

 

查看容器

docker ps

进入容器内部

docker exec -it d8efef0b96b2 bash

连接mysql、查看数据库

mysql –uroot –p
show databases;

 

连接mysql、查看数据库

use mysql
select user,host from user;

 

停止容器、查看停止后的人容器

docker stop dockerid 停止容器
docker ps –a 查看所有容器(含停止)

端口映射:把容器内部的端口映射到宿主机的端口,方便暴露

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql

发生冲突

删除容器:删除已经停止的容器

docker rm containerId 删除容器,参数为容器ID

删除后再启动正常

 

删除docker镜像

docker rmi imageId 删除镜像,制定镜像ID

 

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

Title - Artist
0:00