-
什么是docker
docker是一个轻量级的容器引擎,使用方便,一键部署,到处使用,传统部署方案我们需要将服务打包上传至服务器,然后依次启动,如果有多台服务器,则要依次执行打包->上传->部署多次,非常耗时,而使用docker部署的话,我们只需要部署一次,然后将生成的镜像上传至docker仓库,其他服务器需要部署时只需要将镜像拉取下来直接启动即可,省时省力,方便快捷,这也是docker如今非常火的原因。 -
docker三大件
说到docker,就必须要说说docker的重要的核心的三个组成部分,即镜像,仓库,容器,下来依次讲解。
镜像:字面意思就是副本的意思,可以理解成我们的代码打包后的应用程序,我们部署服务的第一步就是需要将我们的代码打包成镜像,也正是因为镜像的存在。
仓库:简单来说就是仓库,不过这个仓库是专门存储镜像的,里面有好多的镜像,对于一些常用的组件,比如数据库的镜像,就可以在仓库中找到,是因为已经有专门的团队帮我们上传了数据库镜像,我们就可以直接使用了,而我们自己的服务,仓库中肯定是没有的,当然,我们也可以将自己的服务镜像上传至仓库,那么下次使用的时候就可以从仓库中获取了,而不需要重新打包镜像了。
容器:可以理解成运行的应用程序,是通过镜像产生的,有了镜像之后,再通过镜像产生容器,容器运行,我们就可以访问这个应用程序了。
-
docker安装
docker安装我在这里就不讲解了,非常简单,几个命令就完成了,网上有许多的例子,大家可以参考下面的链接:
https://www.runoob.com/docker/centos-docker-install.html
安装完成后输入命令 docker,如下则表示安装成功了
-
使用docker安装mysql示例
下来我们演示使用docker安装mysql,我们在项目中经常要是用mysql,而且如果有多套环境,还要安装多个mysql,但是如果每个环境都去安装,是很费事费力的,安装一个mysql,都要执行几十上百个命令,现在我们用docker来演示,你就知道有多简单了。
输入命令:docker search mysql,此时docker就会在自己的仓库中寻找mysql的镜像,有这么多。
以第一个为例:输入命令:docker pull 镜像name,表明将该镜像从仓库拉取到本机上
下图可以看到已经拉取成功了
使用命令 docker images,查看本机上所有的镜像,我们可以看到第一个mysql,就是我们刚才拉取下来的镜像,还可以看到这个镜像的其他信息,这个镜像的创建时间是3天前,大小是546MB,镜像的id等信息。
然后我们启动镜像:docker run -itd -p 3333:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
可以看到,容器已经起来了,命令的参数中docker run -itd 是启用容器命令,-p 是指定端口号,其中冒号前的端口号是对外的端口号(宿主机暴露的端口号),也就是我们客户端连接时的端口号,冒号后的端口号是容器内部通信的端口号, 至于下来的参数是指定mysql的root账号的密码,这个就不用记了,因为不同的数据库写法不一样,大家到时百度即可,最后面的mysql是镜像名称,相当于指定将该镜像启动容器。
上图容器已经起来了,第一个就是,然后我们进入mysql,下图,docker exec -it 容器id /bin/bash,通过命令连接mysql,发现mysql已经启动了。
然后再通过客户端连接,我们用的是navicat,连接名是宿主机的ip,我的docker安装的主机ip就是10.1.3.83,端口是我们指定的端口号,账号密码我们在之前也指定了
特别注意:
在客户端连接之前需要关闭Linux机器的防火墙,以防防火墙拦截。
我的机器是centos版本,关闭防火墙命令是:systemctl stop firewalld.service
- docker其他常用命令总结.
docker push —将本地镜像推送到远程仓库
docker cp —将容器内的文件拷贝到宿主机上,或者将宿主机上文件拷贝到docker容器中
docker logs 容器id —查看容器日志
docker stop 容器id —停止运行容器
docker start 容器id —启动容器
docker restart 容器id --重启容器
docker rm 容器id —删除容器
docker rmi 镜像id —删除镜像
docker build -t —将服务打包成镜像
docker exec -it 容器id /bin/bash 或者 docker exec -it 容器id /bin/sh —进入容器
service docker restart —重启docker
service docker stop --关闭docker
service docker start --启动docker
docker rename 原容器名 新容器名 --给容器重命名