龙空技术网

「Docker」超详细基础教程-下篇

新盟教育叶sir 601

前言:

现在姐妹们对“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