Docker的使用
1、什么是Docker
Docker是一个虚拟机
Docker是一个容器、这个容器中能放置很多的镜像、同时这个容器也能自身操作这所有的镜像
镜像:这个镜像你可以认为是安装了Linux操作系统 或者 在操作系统上 安装了一些列服务的这样一个载体
备注:你可以认为Docker是一个虚拟机 只不过这个虚拟机 可能功能上 更加强大 他能同时操作多个包含操作系统的镜像
注意:镜像上的操作系统 一般情况下 都是被阉割了的 这个操作系统 体积会非常的小
2、Docker能干什么
Docker能够安装常用的服务(MySQL、Nginx、Tomcat、JDK、FastDFS、Redis)
单体应用可以进行容器化部署
在Docker中服务可以进行多节点的部署
Docker可以进行容器的动态伸缩
3、Docker的基本安装
一、安装docker
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
$ uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
$ sudo yum update
3、卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r
7、安装docker
$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
8、启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
4、Docker的基本命令
容器:表示的是 镜像运行之后的实例
docker pull :镜像的名字:镜像的版本号 //从远程仓库下载一个我们需要的镜像
docker images :查看本地仓库的镜像
docker ps -a :这个查看当前真该运行的容器
docker rm
docker stop 容器id :这个表示的是 停止这个容器
docker start 容器的id :这个表示的是 启动这个容器
docker exec -it 容器的id /bin/bash :这个表示的是进入某一个容器
docker search 镜像的名字 :这个就叫做 搜索某一个镜像是否存在 并且列举出这个镜像中的所有数据
docker commit 容器的id :在原来镜像的基础上 你可以构建一个新的镜像 并进行打包成镜像
docker rm 容器的名字 删除一个容器
docker rmi 镜像的名字 :删除一个镜像
5、Docker安装JDK
6、Docker安装下Tomcat
6.1、从远程下载并安装
docker pull tomcat:8.5.57-jdk8
在本地准备要访问的文件和文件夹
准备的目录:/usr/local/webapp的目录
docker run -d(后台运行) -p(端口映射) 8080(宿主机端口):8080(容器的端口) -v(挂载目录) /usr/local/webapp(宿主机的目录):/usr/local/tomcat/webapps(容器的目录) tomcat:8.5.57-jdk8
然后使用docker ps -a 查看容器是否已经启动
在浏览器就可以访问这个Tomcat了
7、Docker安装MySQL
docker pull mysql:5.7
启动
docker run -d --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
进入容器
docker exec -it 容器的id /bin/bash
mysql -u root -p123456
赋予远程访问的权限
mysql> use mysql;
mysql> alter user 'root'@'%' identified with mysql_native_password by '123';
mysql> flush privileges;
使用远程的连接工具直接连接这个服务器 Sqlyog等工具
8、镜像的制作之Dockerfile的使用
前面的都是小试牛刀 这个才是最重要的
制作镜像 :docker commit 这个命令
但是一般在做项目部署或者 服务的部署的时候 我们都会使用 Dockerfile这个文件来进行构建
Dockerfile是编写一个文件 使用这个文件来 构建我们的镜像
8.1、构建一个自己的镜像
from centos:7 :这个表示的是从那个基础的镜像进行构建
maintainer xiaobobo :这个表示的是 构建这个镜像的作者
add jdk-7u79-linux-x64.tar.gz /usr/local // add:表示的是 将这个文件上传到指定的路径 并且进行解压
add linux_apache-tomcat-7.0.26.tar.gz /usr/local
env JAVA_HOME /usr/local/jdk1.7.0_79 //这个表示的是设置Java的环境变量
env PATH $JAVA_HOME/bin:$PATH
expose 8080 //这个表示的是对外暴露的端口
cmd ["/usr/local/apache-tomcat-7.0.26/bin/catalina.sh","run"] //这个表示的是启动文件所在的路径 以及启动的命令
注意:1、这个Dockerfile文件的名字是不能乱写的
构建镜像的命令
docker build -t 镜像的名字:镜像的版本号 .(这个.表示的是在当前的这个路劲下去找 Dockerfile这个文件)
启动这个镜像的命令
docker run -d -p 8080:8080 xiaobobotomcat:v1.0
8.2、构建不解压的文件的镜像
from centos:7
maintainer xiaobobo
copy jdk-7u79-linux-x64.tar.gz /usr/local
copy linux_apache-tomcat-7.0.26.tar.gz /usr/local
copy cd-2001-springcloud-aaa.war /usr/local
run cd /usr/local && \
tar -zxvf jdk-7u79-linux-x64.tar.gz && \
cd /usr/local && \
tar -zxvf linux_apache-tomcat-7.0.26.tar.gz && \
cd /usr/local && \
cp cd-2001-springcloud-aaa.war /usr/local/apache-tomcat-7.0.26/webapps
env JAVA_HOME /usr/local/jdk1.7.0_79
env PATH $JAVA_HOME/bin:$PATH
expose 8080
cmd ["/usr/local/apache-tomcat-7.0.26/bin/catalina.sh","run"]
要向同时部署 多个服务 这个一个Dockerfile文件显然不能满足咋们的要求 这个时候 docker-compose就应运而生了
9、Docker-Compose的使用
docker-compose 是用来干嘛的呢? 简单的说 是用来进行容器编排的 简单的说我们在运行 一些列容器的时候 容器的初始化可以拥有顺序
9.1、安装docker-compose
#安装依赖
yum -y install epel-release
#安装PIP
yum -y install python-pip
#升级PIP
pip install --upgrade pip
pip install -U docker-compose==1.23.2