一、Docker简介
Docker
是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。
二、Docker的核心概念
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
三、在linux环境下安装Docker
注意:Docker安装Docker要求linux内核必须高于3.10.可以在命令行里面查询当前linux的内核版本。
uname -r #如果内核版本低于3.10.需要升级当前内核版本。命令为:yum update,如果是CentOS6版本的建议直接装CentOS7,因为内核升级只能升级到当前Linux的最高版本
1.这里建议使用centOS7.0及以上的版本。这里给大家提供
http://isoredirect.centos.org/centos/7/isos/x86_64/
2.简易小伙伴们进行简易安装,然后就是一路冲到底
3.Docker的安装
yum install docker
4.启动docker
systemctl start docker
注意:如果出现
这个错误,是因为此linux的内核中的SELinux不支持 overlay2 graph driver ,解决方法有两个,要么启动一个新内核,要么就在docker里禁用selinux,–selinux-enabled=false。在这里我们设置selinux-enabled=false
在命令行输入:
vi /etc/sysconfig/docker
然后按esc退出命令行插入模式,按Shift+:,然后WQ+回车键保存即可。
5.查看按照的docker版本号
docker -v
6.设置docker开机自启
systemctl enable docker
7.停止docker
关闭docker service docker stop
关闭docker systemctl stop docker
四、docker的常用操作
1.镜像操作
2.Docker拉取的镜像源更改为国内的镜像源
#编辑daemon.json,添加如下代码,然后按住esc退出编辑模式,然后按住shift+q,然后输入wq保存
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}
#重启docker服务
systemctl restart docker
3.搜索mysql镜像
docker search mysql
4.拉取镜像
docker pull mysql
5.查看下载好的镜像
docker images
6.删除镜像
1)首先需要停止所有的容器
docker stop $(docker ps -a -q)
2)删除所有的容器(只删除单个时把后面的变量改为image id即可)
docker rm $(docker ps -a -q)
3)查看host中的镜像
docker images
4)删除指定id的镜像
docker rmi <image id>
7.安装mysql容器
docker run -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql #启动容器
外部使用sqlyog或者Navicat客户端工具测试连接
解决方案如下:
1、在虚拟机中登录到mysql容器,然后进入mysql
docker exec -it mysql01 /bin/bash
mysql -uroot -p
Enter password:
mysql> select host,user,plugin,authentication_string from mysql.user;
备注:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码
mysql> use mysql;
mysql> alter user 'root'@'%' identified with mysql_native_password by '123';
mysql> flush privileges;
mysql> select host,user,plugin,authentication_string from mysql.user;
出现上述图片,再次用navicat远程连接mysql就成功了
8.安装tomcat容器
docker search tomcat #搜索镜像
docker pull tomcat #拉取镜像
出现以上信息说明镜像拉取成功
docker run -d -p 8888:8080 tomcat #根据镜像启动容器
-d:后台运行
-p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
查看运行中的容器 docker ps
为了演示简单,关闭了linux的防火墙
service firewalld status ;查看防火墙状态
service firewalld stop:关闭防火墙
http://192.168.85.129:8888/ #查看能否访问tomcat 当前的ip地址:8888
确定防火墙关闭但访问Tomcat还是失败之后,使用如下命名进入Tomcat的目录
docker exec -it c110e319cdd1(启动的Tomcat容器的容器id) /bin/bash
使用命令查看当前文件夹内的所有文件
ls -l
进入webapps文件夹下
cd webapps
查看webapps下的文件
ls -l
显示total 0,问题就出在这里,webapps文件夹下没有东西
cd .. #返回上一级目录
将webapps.dist文件夹下的内容复制到给webapps文件夹
cp -r webapps.dist/* ./webapps
访问tomcat服务器成功
查看容器日志 docker logs 容器id
查看tomcat容器的日志:docker logs b169b410a074
一个镜像可以启动多个容器,所以我可以启动多个tomcat容器
docker run -d -p 8889:8080 tomcat
docker run -d -p 9090:8080 tomcat