Docker(2)--图形化及编排

1.Docker图形化界面

图形化界面直接使用命令下载,其本身也是一个镜像

docker run -id -p 8000:8000 -p 9000:9000 --name=portainer     --restart=always     -v /var/run/docker.sock:/var/run/docker.sock     -v portainer_data:/data     portainer/portainer

 

下载后直接在浏览器访问 虚拟机/服务器:9000

1.进入后设置密码

2.选择本地(local)

3.

在其中,可以对镜像,容器等进行增删改操作

2.Docker服务编排

  描述:

docker建议我们每一个容器中只运行一个服务,因为docker容器本身占用资源极少,所以最好是将每个服务单独的分割开来但是这样我们又面临了一个问题?

如果我需要同时部署好多个服务,难道要每个服务单独写Dockerfile然后在构建镜像,构建容器,这样累都累死了,所以docker官方给我们提供了docker-compose多服务部署的工具

Compose允许用户通过一个单独的docker-compose.yml模板文件[你写](YAML 格式)来定义一组相关联的应用容器为一个项目(project)

可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题

 

2.1 Docker Compose 安装使用

使用命令进行安装

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose

# 查看版本信息 
docker-compose -version

【注:因为其下载地址在GitHub仓库中,所以在下载中可能会出现失败现象,重试下载命令即可】

下载成功!

2.2 使用docker compose编排springboot+redis+mysql项目

首先在linux系统上创建一个docker目录

我的创建地址 /app/docker 

  

打包springboot工程,可以是一个完整的工程,我在其中写了增删改查功能,使用到了mysql、redis(为了测试使用)

编写dockerfile文件:

FROM java:8
MAINTAINER baby<6666@163.com>
ADD DockerTestProject-0.0.1-SNAPSHOT.jar test.jar
EXPOSE 8080
CMD java -jar test.jar

其中,这两个文件放入到docker目录中的project目录(没有就创建一个)

 

编写 docker-compose.yml 文件

version: "3"
services:
  micro_service:
    container_name: myp1
    build:
      context: ./project    #dockerfile文件和jar包所在位置
      dockerfile: dockerfile #dockerfile文件名
    ports:
      - "8080:8080"
    volumes:
      - /app/microService:/data
    networks:
      - aaa_net
    depends_on:
      - myredis
      - mymysql
  myredis:
    image: redis:6.0.20
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf  # 必须在宿主机中存在my.cnf文件
      - /app/redis/data:/data
    networks:
      - aaa_net
    command: redis-server /etc/redis/redis.conf
  mymysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'aaasql'
    ports:
      - "3306:3306"
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/my.cnf:/etc/my.cnf # 必须在宿主机中存在my.cnf文件
      - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - aaa_net
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:
  aaa_net:

 

编写数据卷:

redis与mysql的数据卷绑定在我上一篇就以实验过

详情查看:https://www.cnblogs.com/9--1/p/17683130.html

my.cnf

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

 

连接远程数据库:

将项目需要的数据库文件在远程数据中复现

比如我在本地需要一个aaa库和student表

那么将这些数据连接远程数据库后复制到其中

那么在项目中的mysql配置文件可以写成这样:

这样就可以动态的移动整个项目,哪怕换一个服务器也可以照样运行

 

测试运行:

在/app/docker 目录中运行命令:

docker-compose up


以上便是Docker(2)--图形化及编排中的内容,如有漏缺请在下方留言告知,我会及时补充 

posted @ 2023-09-08 17:21  九极致之术  阅读(62)  评论(0编辑  收藏  举报