自从实习过后好久没有没有再写过博客,今天趁着下班之前就写一篇关于Docker的一篇博文,当然范围有限,这仅仅只是我在部署公司微服务环境中遇到的。
首先以个人理解解释下什么是Docker吧。通常情况下我们可能将MYSQL的服务装在本机或者是Linux虚拟机(服务器中),但是你想过没,如果在你本机装好的MYSQL上已经配置了相关的配置(比如说将默认的Latin编码跟改为utf-8),当你需要在另一台主机上部署同样的服务,那么你还需要进行相同的配置。可能一个开发中本机运行环境OK,并高兴的将他写的代码讲给了测试人员,但是由于环境的种种原因,测试人员在他的电脑上死活跑不死来并且疯狂报错,然后他们就相互的扯皮…这就是故事的开端。
然后我们思考一下能不能有一个这样的情况,我们把程序员小K的环境生成一个镜像(装过Windows或者是Linux的同学应该知道),当测试员小J测试的时候直接装上小K的镜像,然后再运行,这样就不会报错了。
上面是可以引入Docker的概念了,Docker其实就是以容器化的思想来运行着自己想要的镜像资源然后提供相应的服务,每一个容器在本机看来都是一个进程,每一个进程对外提供相应的服务。然后我们来看一下官方原话,介绍下What is a Container
A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.
大概就是介绍了容器技术就是一种可以快速将一个电脑中的环境镜像移植到另一台电脑上,并且Docker容器镜像是轻量的、单独运行的、并且可以执行软件包,包含了你需要运行的一个应用程序的所有的运行环境条件。
Docker在Linux上的安装
(1)安装关于Docker的依赖环境
yum -y install yum-utils device-mapper-persistent-data lvm2
(2)设置下载Docker的镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(3)安装Docker
yum makecache fast
yum -y install docker-ce
(4)启动并设置开机自启动
systemctl start docker
systemctl enable docker
(5)测试
docker run hello-world
当然第一次执行这一步因为本地没有一个叫做hello-world的镜像,他回去阿里镜像中进行下载,第一次肯定得不到想要的结果,所以我们需要在下载好后再次执行上面的命令。
(6)查看Docker的版本信息
docker -v
Docker的基本使用
名词解释:
Docker主机:安装了吧Docker程序的机器(Docker也是运行在操作系统之上的应用程序)
Docker客户端:连接Docker主机进行操作。
Docker仓库:用来保存各种打包好的软件镜像,当然,这里的仓库和Maven仓库有点像,分作为远程仓库和本地仓库。
Docker镜像:软件打包好的镜像,放在Docker的仓库中。
Docker容器:镜像启动之后的实例称为一个容器;一个容器独立运行一个或一组应用。
镜像操作
检索:在DockerHub上检索镜像的详细信息(https://hub.docker.com/)
docker search 关键字
拉取:从远程仓库去拉取镜像到本机
docker pull 镜像名:tag
这里的tag是可选的,默认下载的是lastest最新稳定版,当然你也可以自行选择版本。
列表:查看本地仓库中已经存在的所有镜像
docker images
删除:删除本地指定的镜像
docker rm image-id
在Docker中启动一个MYSQL的实例
(1)首先按照上面的步骤拉取mysql镜像。
(2)数据库配置(设置数据库表名不区分大小写),在/hzero/mysql-file/mysql-test1/mysql_cnf下新建一个my.cnf文件,增加lower_case_table_names=1,当然其他的配置也可以酌情添加。
***注意这里是1,不是l(字母)
[mysqld]
lower_case_table_names=1
max_connections=1000
(3)启动容器
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -v /hzero/mysql-file/mysql-test1/mysql_data/:/var/lib/mysql/:rw -v /hzero/mysql-file/mysql-test1/mysql_cnf:/etc/mysql/:rw --privileged=true 954
(4)查看容器是否已经启动成功
docker ps -a
注意查看status这个状态,up表示已经启动了,而Exited表示退出(未运行)
(5)这一步是可选的,我们在操作数据库的时候总不能一直这个软件oot用户登录吧,总需要开辟一个新的用于并赋予权限。这时候我们可以首先使用Navicat这个软件或者本机cmd窗口登录(使用root用户,密码是root)。然后就可以创建用户并且赋予权限。