前言:
现在姐妹们对“docker数据卷mysql”都比较关注,你们都想要知道一些“docker数据卷mysql”的相关内容。那么小编同时在网摘上收集了一些关于“docker数据卷mysql””的相关内容,希望大家能喜欢,我们一起来了解一下吧!四、Docker自定义镜像
中央仓库上的镜像,也是Docker的用户自己上传过去的。
# 1. 创建一个Dockerfile文件,并且指定自定义镜像信息。# Dockerfile文件中常用的内容from: 指定当前自定义镜像依赖的环境copy: 将相对路径下的内容复制到自定义镜像中workdir: 声明镜像的默认工作目录cmd: 需要执行的命令(在workdir下执行的,cmd可以写多个,只以最后一个为准)# 举个例子,自定义一个tomcat镜像,并且将ssm.war部署到tomcat中from daocloud.io/library/tomcat:8.5.15-jre8copy ssm.war /usr/local/tomcat/webapps
# 2. 将准备好的Dockerfile和相应的文件拖拽到Linux操作系统中,通过Docker的命令制作镜像docker build -t 镜像名称:[tag] .
五、Docker-Compose
之前运行一个镜像,需要添加大量的参数,可以通过Docker-Compose编写这些参数。
Docker-Compose可以帮助我们批量的管理容器,只需要通过一个docker-compose.yml文件去维护即可。
5.1
下载Docker-Compose
# 1. 去Github官网搜索docker-compose,下载1.24.1版本的Docker-Compose 2. 将下载好的文件拖拽到Linux系统中将文件上传到你所使用的服务器或者虚拟机,然后将文件移动到/usr/local# 3. 需要将Docker-Compose文件的名称修改一下,基于Docker-Compose文件一个可执行的权限mv docker-compose-Linux-x86_64 docker-composechmod 777 docker-compose# 4. 方便后期操作,配置一个环境变量# 将docker-compose文件移动到了/usr/local/bin,修改了/etc/profile文件,给/usr/local/bin配置到了PATH中mv docker-compose /usr/local/binvi /etc/profileexport PATH=/usr/local/bin:$PATHsource /etc/profile# 5. 测试一下# 在任意目录下输入docker-compose
5.2
Docker-Compose管理MySQL和Tomcat容器
yml文件以key:value方式来指定配置信息,多个配置信息以换行+缩进的方式来区分,在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_PASSWORD: root # 指定MySQL的ROOT用户登录密码 TZ: Asia/Shanghai # 指定时区 volumes: - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql # 映射数据卷 tomcat: restart: always # 代表只要Docker启动,那么这个容器就跟着一起启动 image: daocloud.io/library/tomcat:8.5.15-jre8 # 指定镜像路径 container_name: tomcat # 指定容器名称 ports: - 8080:8080 # 指定端口号的映射 environment: MYSQL_ROOT_PASSWORD: root # 指定MySQL的ROOT用户登录密码 TZ: Asia/Shanghai # 指定时区 volumes: - /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps # 映射数据卷 - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs # 映射数据卷
5.3
使用docker-compose命令管理容器
在使用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 logs -f
5.4
docker-compose配置Dockerfile使用
使用docker-compose.yml文件以及Dockerfile文件在生产自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器。
docker-compose.yml
# yml文件version: '3.1'services: ssm: restart: always build: # 构建自定义镜像 context: ../. # 指定dockerfile文件的所在路径 dockerfile: Dockerfile # 指定Dockerfile文件名称 image: ssm:1.0.1 container_name: ssm ports: - 8081:8080 environment: TZ: Asia/Shanghai
Dockerfile文件
from daocloud.io/library/tomcat:8.5.15-jre8copy ssm.war /usr/local/tomcat/webapps
# 可以直接启动基于docker-compose.yml以及Dockerfile文件构建的自定义镜像dockr-compose up -d# 如果自定义镜像不存在,会帮助我们构建出自定义镜像,如果自定义镜像已经存在,会直接运行这个自定义镜像# 重新构建的话# 重新构建自定义镜像docker-compose build# 运行前,重新构建docker-compose up -d --build
六、Docker DI、CD
6.1
引言
项目部署
* 将项目通过maven进行编译打包
* 将文件上传到指定的服务器中
* 将war包放到tomcat的目录中
* 通过Dockerfile将Tomcat和war包转成一个镜像,由DockerCompose去运行容器
项目更新了,将上述流程再次的从头到尾的执行一次。
6.2
CI介绍
CI(continuous intergration)持续集成,持续集成:编写代码时,完成了一个功能后,立即提交代码到Git仓库中,将项目重新的构建并进行测试。
* 快递发现错误。
* 防止代码偏离主分支。
6.3
实现持续集成
6.3.1 搭建Gitlab服务器
* 创建一个全新的虚拟机,并且至少指定4G的运行内存
* 安装docker以及docker-compose
* 将ssh的默认22端口,修改为60022端口
vi /etc/ssh/sshd_configPort 22 -> 60022systemctl restart sshd
* docker-compose.yml文件去安装Gitlab(下载和运行的时间比较长)
version: '3.1'services: gitlab: image: 'twang2218/gitlab-ce-zh:11.1.4' container_name: 'gitlab' restart: always privileged: true hostname: 'gitlab' environment: TZ: 'Asia/Shanghai' GITLAB_OMNIBUS_CONFIG: | external_url '; gitlab_rails['time_zone'] = 'Asia/Shanghai' gitlab_rails['smtp_enable'] = true gitlab_rails['gitlab_shell_ssh_port'] = 22 ports: - '80:80' - '443:443' - '22:22' volumes: - /opt/docker_gitlab/config:/etc/gitlab - /opt/docker_gitlab/data:/var/opt/gitlab - /opt/docker_gitlab/logs:/var/log/gitlab
6.3.2 搭建Gitlab-Runner
查看资料中的g i t la b-runner文件即可安装。
6.3.3 整合项目入门测试
* 创建一个maven工程,添加web.xml文件,编写html页面
* 编写gitlab-ci.yml文件
stages: - testtest: stage: test script: - echo first test ci # 输入的命令
* 将maven工程推送到gitlab中
* 可以在gitlab中查看到gitlab-ci.yml编写的内容
打开gitlab控制台-左侧CI/CD-流水线-已通过
6.3.4编写.gitlab-ci.yml文件
* 编写.gitlab-ci.yml测试命令使用
stages: - testtest: stage: test script: - echo first test ci - /usr/local/maven/apache-maven-3.6.3/bin/mvn package
* 编写关于dockerfile以及dock er-compose.yml文件的具体内容
# 1. DockerfileFROM daocloud.io/library/tomcat:8.5.15-jre8COPY testci.war /usr/local/tomcat/webapps
# 2. docker-compose.ymlversion: '3.1'services: testci: build: docker restart: always container_name: testci ports: - 8080:8080
# 3. ci.ymlstages: - testtest: stage: test script: - echo first test ci - /usr/local/maven/apache-maven-3.6.3/bin/mvn package - cp target/testci-1.0-SNAPSHOT.war docker/testci.war - docker-compose down - docker-compose up -d --build - docker rmi $(docker images -qf dangling=true)
* 测试
6.4
CD介绍
CD(持续交付,持续部署)
6.5
实现持续交付持续部署
6.5.1 安装Jenkins
官网:
version: '3.1'services: jeckins: image: jenkins/jenkins restart: always container_name: jenkins ports: - 8888:8080 - 50000:50000 volumes: - ./data:/var/jenkins_home
第一次运行时,会因为data目录没有权限,导致启动失败
chmod 777 data
访问
访问速度奇慢无比。。。。
输入密码
手动指定插件安装:指定下面两个插件即可
Publish sshgit param…
这里安装过程忘了截图了。。。因为服务器安装的太快,没反应过来,安装成功后,需要指定用户名和密码。
6.5.2 配置目标服务器以及Gitlab免密码登录
Gitlab -> Jenkins -> 目标服务器
* Jenkins去连接目标服务器
左侧的系统设置
选中系统设置
搜索Publish over SSH
点击新增
6.5.3 配置Gitlab免密码登录
* 登录Jenkins容器内部
docker exec -it jenkins bash
* 输入生成SSH密钥命令
ssh-keygen -t rsa -C "邮箱"
* 将密钥复制到Gitlab的SSH中
6.5.4 配置JDK和Maven
* 复制本地的jdk和maven的压缩包到data目录下
* 手动解压
* 在监控界面中配置JDK和Maven
6.5.5 手动拉取gitlab项目
使用SSH无密码连接时,第一次连接需要手动确定
6.5.6 创建maven任务
* 创建maven工程,推送到gitlab
* jenkins的监控页面中创建maven任务
* 执行maven任务
* 最终效果
6.6
实现持续交付持续部署
* 安装Git Parameter的插件,Persistent Parameter的插件(版本)
* 重新制定构建项目的方式
* 构建项目成功后,需要将内容发布到目标服务器
* 修改程序代码,(提交到GitLab仓库中)
FROM daocloud.io/library/tomcat:8.5.15-jre8COPY testcd-1.0-SNAPSHOT.war /usr/local/tomcat/webapps
version: '3.1'services: testcd: build: docker restart: always container_name: testcd ports: - 8081:8080
* 测试
给当前代码添加一个标签
到Jenkins中查看
点击上图的开始构建(查看日志)
去指定的目标服务器中访问具体服务
标签: #docker数据卷mysql