docker
docker安装
想安装Docker,需要先将依赖的环境全部下载,就像Maven依赖JDK一样
yum -y install yum-utils device-mapper-persistent-data lvm2
指定Docker镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker
yum makecache fast
yum -y install docker-ce
启动docker
systemctl start docker
systemctl enabled docker
# 测试
docker run hello-world
docker 镜像命令
1.查看中央仓库的镜像
docker search 所要搜索的镜像名称
2.从远程仓库下载镜像
docker pull 镜像名称
3.查看本地所拥有的镜像
docker images
4.删除本地镜像
注意:当前镜像不被容器进行依赖
docker rmi 镜像名称
5.导出镜像
#将本地镜像导出
docker save -o 导出的路径/名字 镜像id
#加载本地的镜像
docker load -i 镜像文件
#加载完成后,镜像名称以及版本为none 需重新设置
docker tag 镜像id 新名称:版本
docker 容器命令
镜像启动后,称之为容器,运行容器时,需指定你的镜像,如果本地没有该镜像,会自动从远程仓库进行镜像下载,下载完成后,再启动为容器。(注意:一个镜像对应一个容器)
1.启动镜像
docker run 镜像的id|镜像的名称[:tag]
#启动镜像时的参数 例如:
docker run -d -p 宿主机的端口号:容器的端口号 --name 容器的名称 镜像的id|镜像的名称[:tag]
#-d: 代表后台运行容器
#-p: 端口号的映射。当前linux的端口号与容器的端口号。--->端口号可以相同,也可以不同。
#--name 指定容器的名称
2.查看正在运行中的容器
docker ps -a|-q
-a 查看全部的容器,包括没有运行的
-q 之查看容器的标识
3.停止运行中的容器
docker stop 容器id
4.删除容器
删除容器前,必须先停止容器
docker rm 容器id
5.安装tomcat
docker search tomcat
#从远程仓库下载 tomcat:8.5.15-jre8
docker pull daocloud.io/library/tomcat:8.5.15-jre8
#下载完成后,将tomcat镜像启动为容器
docker run -d -p 8081:8080 --name mytomcat 镜像id
#解析
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a9fa2bd4b4e7 b8dfe9ade316 "catalina.sh run" 8 seconds ago Up 8 seconds 0.0.0.0:8081->8080/tcp mytomcat
#CONTAINER ID 容器id 不会重复 唯一
#IMAGE 镜像id
#COMMAND 启动命令
#CREATED 容器创建时间
#STATUS 容器的状态
#PORTS 端口的映射
#NAMES 容器的名称
6.查看容器的日志
docker logs -f 容器id
7.进入容器内部(容器相当于---》再Linux宿主机中,虚拟出来的一个linux服务器)
docker exec -it 容器id bash
8.将文件 复制到容器中
docker cp 文件名称 容器id:容器内部路径
9.docker 安装MySql
#从中央仓库下载Mysql服务
docker pull daocloud.io/library/mysql:5.7.4
#启动mysql服务
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root 镜像id
#如果本地Linux中已经拥有了mysql服务我们需要先停止掉Mysql服务
systemctl stop mysqld.service
#启动docker中的mysql容器
docker start 容器id
docker数据卷
部署springboot项目时,需要使用到docker cp的命令,将linxu下的war包,复制到容器内部的地址中,当你的容器被删除掉后,war同时被删除,如果要再次启动tomcat,需要从新创建容器,从新复制war包
数据卷的作用:将宿主机的目录映射到容器的一个目录中。linux下的一个目录地址,就等同与你映射的容器内部的路径,当我们对linux下的目录中的内容进行操作时,容器内部会进行相同的操作。
1.创建数据卷
数据卷创建后,默认会存放在宿主机 /var/lib/docker/volumes/数据卷名称/_data
docker volume create 数据卷的名称
2.查看数据卷详情
docker volume inspect 数据卷名称
3.查看全部数据卷
docker volume ls
4.删除数据卷
docker volume rm 数据卷的名称
5.数据卷映射
#通过数据卷名称进行映射 ,使用名称进行映射时,我们需要先来创建出数据卷,才能使用名称进行映射。回讲容器内部自带的文件,复制到默认的存放路径中
docker run -d -p 宿主机端口号:容器端口号 -v 数据卷名称:容器内部路径 --name 自定义容器名称 镜像的id
#通过路径进行映射,直接指定一个路径作为数据卷的存放地址,这个路径下是空的。
docker run -d -p 宿主机端口号:容器端口号 -v 宿主机路径:容器内部路径 --name 自定义容器名称 镜像的id
dockerfile 自定义镜像
from: 指定当前自定义镜像的依赖环境
copy: 将相对路径下的内容复制到自定义镜像中
workdir: 声明镜像的默认工作目录
run:执行的命令,可以编写多个
cmd:需要执行的命令(再workdir下执行,cmd可以写多个,只以最后一个为准)
#举例
from daocloud.io/library/tomcat:8.5.15-jre8
copy springboot.war /usr/local/tomcat/webapps
1.制作镜像
编写完成Dockerfile后需要通过命令将其制作成为镜像,并且要在Dockerfile的当前目录下执行该命令,之后就以可以使用docker images 查看自己制作好的镜像。注意最后有一个.
docker build -t 镜像名称[:tag] .
Docker-Compose
Docker-compose 可以帮助我们批量管理容器,只需要个docker-compose.yml文件去维护即可,其中可以定义参数
1.上传docker-compose 进行改名,权限的赋予
#安装docker-compose
将docker-copmose 进行上传
rz docker-compose-Linux-x86_64 上传到用户根目录下
#上传成功后,将docker-compose-Linux-x86_64 进行重命名
mv docker-compose-Linux-x86_64 docker-compose
#将改名后的docker-compose 赋予权限
chmod 777 docker-compose
2.配置环境变量
#将docker-compose 移动到/usr/local/bin目录下
mv docker-compose /usr/local/bin
#编辑环境里变量文件,将docker-compose应用再环境变量中
vi /etc/profile
#将PATH修改为下方的配置
export PATH=$JAVA_HOME/bin:/usr/local/bin:$PATH
#让配置生效,重新加载环境变量
source /etc/profile
3.测试
再任意目录下输入 docker-compose 如能出现Define and run multi-container applications with Docker. 说明docker-compose 安装成功,并且环境变量配置成功
4.使用docker-compose 管理MySql和Tomcat容器
1.编写yml文件管理容器,名字必须是docker-compose.yml
version: '3.1'
services:
mysql: #服务的名称
restart: always #代表只要docker启动,那么这个容器就跟着一起启动
image: daocloud.io/library/mysql:5.7.4 #指定镜像路径
container_name: mysql #容器名称
ports:
- 3306:3306 #端口映射
environment: #配置额外的参数
MYSQL_ROOT_PASSOWRD: root #指定MYSQL的ROOT用户登录密码
TZ: Asia/Shanghai #指定时区
volumes:
- /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql #映射数据卷
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat
ports:
- 8082:8080
environment:
TZ: Asia/Shanghi
volumes:
- /opt/docker_mysql_tomcat/tomcat_webapps:/user/local/tomcat/webapps
- /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs
5.使用docker-compose 命令管理器进行管理
命令必须再docker-compose.yml得同级目录进行执行,否则执行失败
#1.基于docker-compose.yml 启动管理得容器
docker-compose up -d
#2. 关闭并删除容器
docker-compose down
#3. 开启|关闭|重启已经存在得docker-compose 维护得容器
docker-compose start|stop|restart
#4.查看由docker-compose 管理得容器
docker-compose ps
#5. 查看由docker-compose 管理容器得日志信息
docker-compose logs -f
6.docker-compose 配合Dockerfile使用
使用docker-compose.yml文件以及Dockerfile文件再生成自定义镜像得同时启动当前镜像,并且使用docker-compose管理容器
1.修改docker-compose.yml文件配置dockerfile先创建镜像,再来启动镜像
#修改docker-compose.yml文件
version: '3.1'
services:
#服务的名称
mysql:
#代表只要docker启动,那么这个容器就跟着一起启动
restart: always
#指定镜像路径
image: daocloud.io/library/mysql:5.7.4
#容器名称
container_name: mysql
#端口映射
ports:
- 3306:3306
#配置额外的参数
environment:
#指定MYSQL的ROOT用户登录密码
MYSQL_ROOT_PASSWORD: root
#指定时区
TZ: Asia/Shanghai
#映射数据卷
volumes:
- /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql
tomcat:
restart: always
build:
#指定dockerfile得在的路径
#代表Dockerfile的地址实在root用户的根目录下
context: ~/
dockerfile: Dockerfile
#根据dockerfile生成镜像得名称
image: filecomposetomcat:1.0
container_name: tomcat
ports:
- 8082:8080
environment:
TZ: Asia/Shanghai
2.Dockerfile的文件
from daocloud.io/library/tomcat:8.5.15-jre8
copy springboot.war /usr/local/tomcat/webapps
3.测试运行
#直接启动基于docker-compose.yml以及Dockerfile文件构建得自定义镜像
docker-compose up -d