Spring Boot 与 Docker

308 阅读4分钟

文章目录


在这里插入图片描述

1. 概述

Docker是一个开源的应用容器引擎,一个轻量级容器技术。它支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。

docker中常见的概念有:
在这里插入图片描述

  • 主机(Host) :安装了Docker程序的机器(Docker直接安装在操作系统之上);
  • 客户端(Client) :连接docker主机进行操作;
  • 仓库(Registry) :用来保存各种打包好的软件镜像;
  • 镜像(Images) :软件打包好的镜像;放在docker仓库中;
  • 容器(Container) :镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

dokcer的使用步骤:

  • 安装docker
  • Docker仓库中搜索需要的软件对应的镜像
  • 使用docker运行镜像,镜像会生成对应的docker容器
  • 对容器的启动停止等价于对软件的相应操作

2. Docker安装

这里以centos为例进行说命名如何安装docker:

  • 首先使用uname -r命令查看内核版本,确保是3.10及以上

    [root@izbp15ffbqqbe97j9dcf5dz ~]# uname -r
    3.10.0-514.26.2.el7.x86_64
    
  • 使用yum install docker命令安装docker

    [root@izbp15ffbqqbe97j9dcf5dz ~]# yum install docker
    Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
    
    This system is not registered with an entitlement server. You can use subscription-manager to register.
    
    Loading mirror speeds from cached hostfile
    Package 2:docker-1.13.1-161.git64e9980.el7_8.x86_64 already installed and latest version
    Nothing to do
    
  • 使用systemctl start docker命令启动docker

    [root@izbp15ffbqqbe97j9dcf5dz ~]# systemctl start docker
    [root@izbp15ffbqqbe97j9dcf5dz ~]# docker -v
    Docker version 1.13.1, build 64e9980/1.13.1
    
  • 使用命令systemctl enable docker设置docker为开机自启

    [root@izbp15ffbqqbe97j9dcf5dz ~]# systemctl enable docker
    Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
    
  • 如果要停止docker运行,可以使用systemctl stop docker

3. 常用操作

3.1 镜像操作

操作命令说明
检索docker search 关键字 eg:docker<br/>search redisdocker hub上检索所需的软件的镜像信息
拉取docker pull 镜像名:tag:tag可选,默认为latest,即最新版本
查询列表docker images查看所有本地镜像
删除docker rmi image-id删除指定的本地镜像

3.2 容器操作

操作命令说明
根据镜像启动容器docker run ‐‐name mytomcat ‐d tomcat:latest
查看运行中的容器docker ps
停止运行中的容器docker stop 容器id
启动容器docker start 容器id
删除一个容器docker rm 容器id
启动一个做了端口映射的容器docker run ‐d ‐p 8888:8080 tomcat-d:后台运行;-p: 将主机的端口映射到容器的一个端口
查看容器的日志docker logs container‐name/container‐id

4. 安装实例

  • 安装:docker pull mysql

    [root@izbp15ffbqqbe97j9dcf5dz ~]# docker pull mysql
    Using default tag: latest
    Trying to pull repository docker.io/library/mysql ...
    latest: Pulling from docker.io/library/mysql
    8559a31e96f4: Pull complete
    d51ce1c2e575: Pull complete
    c2344adc4858: Pull complete
    fcf3ceff18fc: Pull complete
    16da0c38dc5b: Pull complete
    b905d1797e97: Pull complete
    4b50d1c6b05c: Pull complete
    c75914a65ca2: Pull complete
    1ae8042bdd09: Pull complete
    453ac13c00a3: Pull complete
    9e680cd72f08: Pull complete
    a6b5dc864b6c: Pull complete
    Digest: sha256:8b7b328a7ff6de46ef96bcf83af048cb00a1c86282bfca0cb119c84568b4caf6
    Status: Downloaded newer image for docker.io/mysql:latest
    
  • 端口映射:docker run ‐p 3306:3306 ‐‐name mysql01 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql

  • 使用mysql

  • 使用docker run ‐‐name some‐mysql ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw ‐d mysql:tag ‐‐character‐setserver=utf8mb4 ‐‐collation‐server=utf8mb4_unicode_ci可以指定mysql的一些配置参数

5. 客户端远程连接docker容器中的mysql 报1251错误

5.1 数据库设置

  • 进入容器

    docker exec -it 容器id bash
    
  • 进入mysql

    mysql -uroot -p
    
  • 对远程连接进行授权

    GRANT ALL ON *.* TO 'root'@'%';
    
  • 更改密码的加密规则

    ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
    
  • 更改root密码

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 
    
  • 刷新权限

    flush privileges;
    
  • 查看用户信息

    select host,user,plugin,authentication_string from mysql.user;
    

5.2 云服务器设置

除了进行数据库的相关设置外,还需要配置服务器的安全规则。点击云控制平台左侧的网络与安全 --> 安全—> 配置规则
在这里插入图片描述

然后按照以下方式手动添加安全规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PAyikD2v-1592896079094)(D:\project\work\Java\SpringBoot\images\配置安全规则.png)]

5.3 配置客户端连接

  • 首先需配置SSH通道
    在这里插入图片描述
  • 配置数据库连接的端口号、用户名和密码
    在这里插入图片描述
  • 连接成功
    在这里插入图片描述

6. 镜像源

使用国内镜像加速下载:docker pull registry.docker-cn.com/myname/myrepo:mytag,例如:

docker pull registry.docker-cn.com/library/ubuntu:16.04