docker的安装和使用
1.docker是什么
Docker是一个开源的轻量级应用容器引擎;
docker的作用:
Docker支持将软件编译成一个镜像;
然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
什么是镜像:
例如:原生的windows系统中不带第三方软件;
每次装新系统必须安装一些常用软件;
为了方便,可以将windows系统做成镜像文件,镜像中安装好了一些常用软件;
装系统时直接装镜像,就不需要再自己安装这些软件了;
docker镜像:
在部署javaweb项目时,需要用到MySql、Tomcat等;
可以把这些常用的工具做成Docker镜像,这样就不需要每次都安装了;
2.核心概念
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
docker的公共仓库地址:https://hub.docker.com/
公共仓库是docker官方提供的一些常用镜像仓库,也可以搭建自己的本地仓库;
例如需要使用mysql时:
1】从公共仓库拉取mysql镜像到本地仓库;
2】使用docker命令运行mysql镜像,会启动一个mysql容器;
3】mysql会在mysql容器中运行;
如果需要同时运行5个tomcat:
1】下载tomcat镜像到本地;
2】用docker运行5次tomcat镜像,会启动5个tomcat容器,各个tomcat在自己的容器中运行;
3】容器是沙箱机制互不干扰;
3.安装Docker
1】检查内核版本,必须是3.10及以上
uname ‐r
2】安装docker
yum install -y docker
3】启动docker
systemctl start docker
查看是否启动成功
docker ‐v
Docker version 1.12.6, build 3e8e77d/1.12.6
4】开机启动docker
systemctl enable docker
Created symlink from /etc/systemd/system/multi‐user.target.wants/docker.service to
/usr/lib/systemd/system/docker.service.
5】停止docker
systemctl stop docker
4. 常用命令&操作
官方文档地址:
1) 镜像操作
1】从公共仓库中搜索镜像
docker search 镜像名
例如:搜索mysql
可以找到多条相关的镜像信息;
以第一条为例:
docker.io ->镜像的索引
docker.io/mysql ->镜像名,主要看斜杠后面的部分
DESCRIPTION ->镜像的描述信息
9570 ->镜像的关注度,以k为单位,表示9570k个人关注了这个镜像
OFFICIAL ->如果是[ok]表示该镜像是官方发布的镜像,官方发布的镜像没有做自定义配置
AUTOMATED ->如果是[ok]表示改镜像是自动构建的,也就是这个镜像一运行就自动配置好了
2】从公共仓库下载镜像到本地
docker pull 镜像名
镜像名可以用docker search命令得到;例如mysql镜像全名为:docker.io/mysql;也可以简写为mysql;
版本:
可以在镜像名后面加上标签用来选择不同的版本(mysql:5.5);
默认标签为latest,表示最新版本;
3】查看本地镜像
命令:
docker images
可以看到pull下来到本地的镜像:
例如:第一条本地镜像mysql
镜像名为docker.io/mysql;
版本为最新;
镜像id为30f937e841c8;
镜像创建时间为11天以前;
镜像大小为541m;
2)容器操作
根据镜像启动容器:
docker run ‐‐name mytomcat ‐d tomcat:latest
查看运行中的容器:
docker ps
停止运行中的容器:
docker stop 容器的id
查看所有的容器:(运行中的和停止的)
docker ps -a
根据id启动容器:
docker start 容器id
删除容器:(容器要是停止状态)
docker rm 容器id
启动时附加端口映射:
如果不加端口映射,无法通过ip:port访问tomcat;
因为8080是tomcat容器的端口,而不是主机的端口;
如果想访问tomcat容器的8080端口,必须将其映射到主机的端口,这样就可以通过“主机ip:映射端口”来访问tomcat容器中运行的tomcat了;
docker run ‐d ‐p 8888:8080 tomcat
‐d:后台运行
‐p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
查看日志:
docker logs container‐name/container‐id
5.docker启动mysql
mysql启动时的注意事项:
1】端口映射
2】用-e带上参数root密码
docker run ‐p 3306:3306 ‐‐name mysql02 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql
把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
作用是将主机的mysql配置文件与容器中的mysql配置文件合并
docker run ‐‐name mysql03 ‐v /conf/mysql:/etc/mysql/conf.d ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql:tag
指定mysql的一些配置参数
docker run ‐‐name some‐mysql ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw ‐d mysql:tag ‐‐character‐set‐server=utf8mb4 ‐‐collation‐server=utf8mb4_unicode_ci