带你快速掌握Docker的使用
Posted 小样5411
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带你快速掌握Docker的使用相关的知识,希望对你有一定的参考价值。
一、为什么要用Docker?
1、我们常常会因为环境不一致问题,导致一些稀奇古怪的错误,Docker可以将环境打包成镜像(形象称集装箱),放到中央仓库中(Maven),你需要时下载这个环境,就不会出现环境不一致问题了。
2、多用户操作时,传统方式可能存在一个人写了一个死循环造成系统卡顿,现在有了Docker,Docker在运行环境时不会对其他位置影响。
3、在双十一用户量暴增时,需要增加上前台服务器,Docker可以通过几行命令,快速的部署上千台服务器。
4、不用再配置环境,安装一系列软件,直接通过Docker命令拉取下载即可
注:拉去镜像后运行起来则称为容器,镜像就是集装箱,多个用户都会往中央仓库上传自己的集装箱(镜像)。
从上面可以引出Docker的思想:
1、集装箱
Docker会将有需要的内容(如环境)放到不同的集装箱,谁需要这个环境就直接拿到这个集装箱即可。集装箱就是打包好的镜像,通过Docker运输到中央仓库(如Maven),Docker常常形象称为“大海豚”,中央仓库叫“超级码头”。
2、隔离性
Docker在运行集装箱内容中,会在linux内核中,单独开辟一块空间,在这片空间运行的情况不会影响到其他程序。
注:由于篇幅不想拉太长,就分三篇讲Docker
二、Docker安装与使用
2.1 Docker安装
首先你需要了解下Linux,并且安装过,没有的可以先去看下这篇文章 传送链接
在MobaXterm中输入相关安装命令,大家可以一起来敲
# 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
docker run hello-world
出现下面这个就算安装成功
2.2 Docker使用
我们国内有优秀的中央仓库,网易蜂巢,daoCloud
我们这里用 daoCloud,里面有许多镜像,我们只要搜索自己想用的即可
镜像操作
点击拉取就可以获取到地址
docker pull daocloud.io/library/tomcat:8.0.45
上面只是拉取到镜像,还要用命令运行它
docker images //查看全部镜像,这里镜像叫image
一开始运行了hello-world,然后拉取一个tomcat,两个镜像
如果不想要一些镜像,要删除可以输入下面命令
docker rmi Image ID //如docker rmi fa6a , 这里写一部分也行,相当于模糊匹配,但必须唯一
容器的操作
我们之前也说过,容器就是镜像运行
之前运行直接用docker run,这其实不规范,看下面写法
docker run -d -p 宿主机端口:容器端口 ---name 容器名称 镜像标识
# -d 表示后台运行
# -p 宿主机端口:容器端口是为了映射当前Linux的端口和容器,这个等下演示就知道了
运行后就出现一串英文,地址栏输入自己ip地址就能访问到容器tomcat了,这下可以形象知道8081:8080作用了,就是8081是linux端口,和容器的端口绑定一下,这样访问linux端口时就能映射找到对应的容器
查看正在运行的容器呢?
docker ps //查看正在运行的容器
docker ps -a //查看所有容器
如何查看日志?
docker logs -f 容器ID //容器ID只要部分能保持唯一确定即可
ctrl+c跳出日志
docker stop 容器id //停止容器
docker stop $(docker ps -qa) //停止所有容器
docker start 容器id //启动原本停止的容器
docker rm 容器id //删除容器,删除前需要停止容器
docker rm $(docker ps -qa) //删除全部容器
三、用Docker部署项目
3.1 项目部署
之前关于linux的文章也部署过项目,现在我们用docker也来部署一下,对比一下,首先你要有一个项目,我就用之前开发过的基于SSM的图书管理,在我专栏里有。怎么将项目打包放到linux中,已经之前这篇文章讲过 链接,在部署部分。没有看过的看看
我们查看文档,可以看到library.war打包的项目
1、关闭mysql服务和tomcat服务
如果你没有安装那就跳过,安装了就跟着我关闭一下,然后再去docker里部署这两个容器
(1)到tomcat安装的bin目录执行shutdown.sh关闭tomcat服务
(2)关闭mysql
输入下面两个命令,一个停止,一个禁止开机启动,因为我们不需要在linux用它们了,以后直接在docker用。
systemctl stop mysqld
systemctl disable mysqld
2、Docker中运行MySQL容器和Tomcat容器
首先要到中央仓库中去下载这两个镜像,运行就是容器了。先下载5.7版本,虽然在daocloud找一个含有mysql5.7即可。mysql默认端口3306,这里要指定一个密码,我就写root
# 运行mysql容器,如果本地没有下载,会自动帮你下载
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root daocloud.io/library/mysql:5.7.7
然后测试连接一下,用Navicat或者SQLyog都可以,我用Navicat,新建连接测试一下
可以看到下面就是连接上的数据库,自己新建一个数据库,我已经有了,就是之前的图书管理项目
现在来运行Tomcat容器,由于之前演示过,就不详细说了,下面是运行之前已经拉取的镜像,fa6是镜像ID
docker run -d -p 8081:8080 --name tomcat fa6
我们需要将项目的db.properties文件,username和password都变成root,就是你设置的账号密码,我已经是这个就不用改,数据库一直设置成root就比较好记。
IDEA打开项目,在终端输入下面命令,打包项目,打包完毕会在target下
mvn clean package -DskipTests
复制到根目录中
上面删除之前的项目是因为,之前打包用的密码不是root,账户也不是root,所以要更改再重新打包,然后将重新打包的放入运行的Tomcat容器即可,下面的命令就是将宿主机中的项目复制到容器内,使得通过地址能够访问
docker cp 文件名称 容器id:容器内部路径
docker cp library.war 367:/usr/local/tomcat/webapps/
注意看看自己路径有没有错,就是对应路径每个目录名字是否错误
访问地址192.168.1.246:8081/login,部署成功
以上是关于带你快速掌握Docker的使用的主要内容,如果未能解决你的问题,请参考以下文章