一文教您如何通过 Docker 快速搭建各种测试环境

一文教您如何通过 Docker 快速搭建各种测试环境,第1张

目录

一、镜像加速

Docker 默认是从官方镜像地址 Docker Hub 下下载镜像,由于服务器在国外的缘故,导致经常下载速度非常慢。为了提升镜像的下载速度,我们可以手动配置国内镜像加速,让下载速度飚起来。

国内的镜像加速选项较多,如:阿里云,DaoCloud 等。

本文主要说说如何配置阿里云的镜像加速。

21 登录阿里云获取加速信息

>

docker run --privileged=true -p 3306:3306 --name mysql57 -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d dockerio/mysql:57

-p 端口映射

--name 启动容器名称

-v 目录挂载

-e 初始化root密码

-d 后台运行mysql

--privileged 

Docker 划分为CE 和EE。CE 即社区版(免费,支持周期三个月),EE 即企业版,强调安全,付费使用。

在Ubuntu系统中安装较为简单,官方提供了脚本供我们进行安装。

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把Docker CE 的Edge版本安装在系统中。

启动Docker CE

建立docker 用户组

默认情况下,docker 命令会使用Unix socket 与Docker 引擎通讯。而只有root 用户和docker 组的用户才可以访问Docker 引擎的Unix socket。出于安全考虑,一般Ubuntu系统上不会直接使用root 用户。因此,更好地做法是将需要使用docker 的用户加入docker用户组。

注销当前用户,重新登录Ubuntu,输入docker info,此时可以直接出现信息。

配置国内镜像加速

在/etc/docker/daemonjson 中写入如下内容(如果文件不存在请新建该文件)

重新启动服务

测试

我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:

各个参数解析:

-t: 在新容器内指定一个伪终端或终端。

-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。

使用以下命令创建一个以进程方式运行的容器

二、使用Docker安装 MySQL

用 docker search mysql 命令来查看可用版本:

2、拉取 MySQL 镜像

这里我们拉取官方的最新版本的镜像:

3、查看本地镜像

使用以下命令来查看是否已安装了 mysql:

4、运行容器

安装完成后,我们可以使用以下命令来运行 mysql 容器:

大小写敏感

参数说明:

-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。

MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

使用docker exec进入Docker容器

从容器里面拷文件到宿主机

docker cp mysql-57:/etc/mysql/ /home

从宿主机拷文件到容器里面

docker cp /home/s/mycnf mysql-57:/etc/mysql/

大小写敏感修改

/etc/mycnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务 0敏感 1不敏感

开启远程连接

5、安装成功

通过 docker ps 命令查看是否安装成功:

6、连接

mysql -u root -P3308 -h 127001 -p

Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache20协议开源。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:

Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。同VM的方式不同, LXC 其并不是一套硬件虚拟化方法 - 无法归属到全虚拟化、部分虚拟化和半虚拟化中的任意一个,而是一个 *** 作系统级虚拟化方法, 理解起来可能并不像VM那样直观。所以我们从虚拟化到docker要解决的问题出发,看看他是怎么满足用户虚拟化需求的。

用户需要考虑虚拟化方法,尤其是硬件虚拟化方法,需要借助其解决的主要是以下4个问题:

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类形

Docker面向对象容器对象镜像类

Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。

Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。

Docker 特性

在docker的网站上提到了docker的典型场景:

由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。

Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:

针对1-2,有windows base应用的需求的基本可以pass了; 3-5主要是看用户的需求,到底是需要一个container还是一个VM, 同时也决定了docker作为 IaaS 不太可行。

针对6,7虽然是docker本身不支持的功能,但是可以通过其他手段解决(disk quota, mount --bind)。总之,选用container还是vm, 就是在隔离性和资源复用性上做权衡。

另外即便docker 07能够支持非AUFS的文件系统,但是由于其功能还不稳定,商业应用或许会存在问题,而AUFS的稳定版需要kernel 38, 所以如果想复制dotcloud的成功案例,可能需要考虑升级kernel或者换用ubuntu的server版本(后者提供deb更新)。这也是为什么开源界更倾向于支持ubuntu的原因(kernel版本)

Docker并非适合所有应用场景,Docker只能虚拟基于Linux的服务。Windows Azure 服务能够运行Docker实例,但到目前为止Windows服务还不能被虚拟化。

可能最大的障碍在于管理实例之间的交互。由于所有应用组件被拆分到不同的容器中,所有的服务器需要以一致的方式彼此通信。这意味着任何人如果选择复杂的基础设施,那么必须掌握应用编程接口管理以及集群工具,比如Swarm、Mesos或者Kubernets以确保机器按照预期运转并支持故障切换。

Docker在本质上是一个附加系统。使用文件系统的不同层构建一个应用是有可能的。每个组件被添加到之前已经创建的组件之上,可以比作为一个文件系统更明智。分层架构带来另一方面的效率提升,当你重建存在变化的Docker镜像时,不需要重建整个Docker镜像,只需要重建变化的部分。

可能更为重要的是,Docker旨在用于d性计算。每个Docker实例的运营生命周期有限,实例数量根据需求增减。在一个管理适度的系统中,这些实例生而平等,不再需要时便各自消亡了。

针对Docker环境存在的不足,意味着在开始部署Docker前需要考虑如下几个问题。首先,Docker实例是无状态的。这意味着它们不应该承载任何交易数据,所有数据应该保存在数据库服务器中。

其次,开发Docker实例并不像创建一台虚拟机、添加应用然后克隆那样简单。为成功创建并使用Docker基础设施,管理员需要对系统管理的各个方面有一个全面的理解,包括Linux管理、编排及配置工具比如Puppet、Chef以及Salt。这些工具生来就基于命令行以及脚本。

以上就是关于一文教您如何通过 Docker 快速搭建各种测试环境全部的内容,包括:一文教您如何通过 Docker 快速搭建各种测试环境、docker-index.exe内存占用大、docker 启动mysql5.7命令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10143772.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)