什么是docker
Docker是一个开源的应用容器引擎,是一个轻量级容器技术;
Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。
Docker核心概念
- docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
- docker客户端(Client):连接docker主机进行操作;
- docker仓库(Registry):用来保存各种打包好的软件镜像;
- docker镜像(Images):软件打包好的镜像;放在docker仓库中;
- docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
使用Docker的步骤:
- 安装Docker
- 去Docker仓库找到这个软件对应的镜像;
- 使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
- 对容器的启动停止就是对软件的启动停止;
安装Docker
在VirtualBox安装好CentOS系统
查看CentOS版本
Docker要求Centos系统的内核版本要高于3.10uname -r #查看Linux内核版本
yum update #升级Linux软件包以及内核版本安装Docker
yum install docker
启动docker
systemctl start docker #启动docker
docker -v # 检查docker版本
systemctl enable docker #docker设置开机启动停止docker
systemctl stop docker #将docker关掉
docker基本命令操作
docker阿里云镜像加速
1、登陆阿里云账号
2、找到容器镜像服务,点击管理控制台
3、找到镜像加速器,然后根据配置教程,配置自己的docker
镜像操作
操作 | 命令 | 说明 |
---|---|---|
检索 | docker search 关键字 eg:docker search redis | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。 |
拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest |
列表 | docker images | 查看所有本地镜像 |
删除 | docker rmi image-id | 删除指定的本地镜像 |
可以通过docker hub去找docker仓库。
检索 |
容器操作
操作 | 命令 | 说明 |
---|---|---|
运行 | docker run –name container-name -d image-name eg:docker run -name myredis -d redis |
–name:自定义容器名 -d:后台运行 image-name:指定镜像模板 |
列表 | docker ps(查看运行中的容器) | -a 可以查看所有容器 |
停止 | docker stop container-name/container-id | 停止当前你运行的容器 |
启动 | docker start container-name/container-id | 启动指定容器 |
删除 | docker rm container-id | 删除指定容器 |
端口映射 | -p 6379:6379 eg:docker run -d -p 6379:6379 –name myredis docker.io/redis |
-p:主机端口(映射到容器内部的端口) |
容器日志 | docker logs container-name/container-id | |
更多命令 | https://docs.docker.com/engine/reference/commandline/docker/ |
软件镜像—-运行镜像—-产生一个容器(正在运行的软件)
步骤:
1、搜索镜像 |
安装mysql
从docker镜像拉下mysql
docker pull mysql
启动MySQL
错误的启动方式:
docker run --name mysql01 -d mysql
这样指定以后,会发现mysql并没有启动起来,我们可以通过
docker ps -a
命令查看,发现mysql容器异常退出了,我们需要查看一下日志docker logs 容器id
发现如下错误:Database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
//这里说明的是mysql 要启动必须指明一些参数。不然启动会报错正确的启动方式
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql # 没有做端口映射无法使用
docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql # 这样做了端口映射才可以实现这里可以参考docker官网对于mysql的配置:https://hub.docker.com/_/mysql
然后我们使用mysql客户端连接工具就可以进行使用了
使用自定义的mysql配置文件
docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)
使用命令的方式修改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
docker run -it --rm mysql:tag --verbose --help # 查看完整的属性列表指定mysql的一些配置参数
安装redis
- 查找一下是不是有redis镜像
docker search redis
- 利用pull命令将官方镜像下载下来
docker pull redis
- 利用run命令运行redis
docker run -d -p 6379:6379 --name myredis docker.io/redis
- 利用docker ps看redis是否在运行
- 使用redis连接工具Redis Desktop Manager连接使用
安装RabbitMQ
我们去docker hub上看一下rabbitMQ有哪些版本,这里选择下载带有management的版本,这种带有web的管理界面
- pull命令下载
docker pull rabbitmq:management
- 我们运行rabbitMQ,因为带着管理界面,所以需要映射两个端口,5672是通信用的端口,15672是管理界面端口
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq a563e10677e8 #镜像id
- 使用docker ps查看服务是不是起来了。
- 打开ip:15672,就可以进入RabbitMQ的管理界面,用户名和密码都为guest
安装ElasticSearch
- 首先搜索镜像
docker search elasticsearch
- 将镜像下载下来
docker pull elasticsearch
- 运行镜像
因为elasticsearch是用java写的,初始会默认占用2G的堆内存,所以我们做一些限制docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES01 elasticsearch
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" 用来限定内存的
-p 9200:9200 使用的端口
-p 9300:9300 分布式集群通信的端口 - 测试是否运行正常
- 打开浏览器输入ip:9200,然后回车
- 如果出现这段json数据,就算启动成功了
{
"name": "p-RQ13-",
"cluster_name": "elasticsearch",
"cluster_uuid": "KjpRMvibSLm6A-qaEzni-w",
"version": {
"number": "5.6.12",
"build_hash": "cfe3d9f",
"build_date": "2018-09-10T20:12:43.732Z",
"build_snapshot": false,
"lucene_version": "6.6.1"
},
"tagline": "You Know, for Search"
}
- 这样我们就可以正常使用了。
安装ZooKeeper
- 直接搜索或者聪docker hub上进行查找
docker search zookeeper
- 镜像拉取
docker pull zookeeper
- 运行zookeeper2181是客户端端口,2888是关注者端口,3888 是选举端口,8080是管理员端口
docker run --name myzookeeper -p 2181:2181 --restart always -d zookeeper
- 检查是否运行成功
docker ps