使用docker

您所在的位置:网站首页 docker链接本地 使用docker

使用docker

2023-12-10 10:10| 来源: 网络整理| 查看: 265

使用docker-compose启动springboot项目,并连接mysql数据库 一、安装docker-compose二、创建一个springboot项目三、配置运行环境四、遇到的问题记录五、docker、docker-compose、docker swarm和k8s的区别

一、安装docker-compose

安装docker-compose前需要先安装docker,并启动docker。

#下载docker-compose脚本 curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #授权给用户执行权限 sudo chmod +x /usr/local/bin/docker-compose #测试docker-compose是否完成安装,如果出现版本号,则安装成功 docker-compose --version 二、创建一个springboot项目 /** * @Author wangy * @create 2021/11/24 19:12 * @Description */ @RestController public class DemoController { //链接地址, mysql_c代表 一个services,docker-compose给运行起来的容器,名字叫mysql_c,并且已经配置好docker network,直接访问别名就能访问数据库 private static String URL = "jdbc:mysql://mysql_a:3306/docker?useSSL=true&useUnicode=true&characterEncoding=UTF-8"; //驱动名称 private static String DRIVER = "com.mysql.cj.jdbc.Driver"; //用户名 private static String USER = "root"; //密码 private static String PASSWORD = "123456"; //加载驱动信息 static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } @GetMapping("/show") public String show() throws Exception{ Connection conn = DriverManager.getConnection(URL, USER, PASSWORD); //准备一条sql语句,如果执行成功代表已经能够连接数据库 String sql = "select 'ok,已经能够正常连接mysql数据库' from dual"; PreparedStatement pst = conn.prepareStatement(sql); //执行sql语句 ResultSet rs = pst.executeQuery(); String str = ""; //判断返回值是否存在,并取出返回值 if (rs.next()) { str = rs.getString(1); } //关闭连接对象 conn.close(); return str; } }

然后maven–>install,得到target下的demo-1.0.jar可执行jar文件。

三、配置运行环境 #创建测试的操作目录 mkdir -p /usr/local/docker && cd /usr/local/docker

然后将demo-1.0.jar上传至/usr/local/docker目录下。

#编辑dockerFile vi DockerFile

内容如下:

FROM openjdk:8 EXPOSE 8080 ADD demo-1.0.jar demo-1.0.jar ENTRYPOINT ["java","-jar","demo-1.0.jar"]

然后保存,继续创建一个docker-compose.yml

vi docker-compose.yml

内容如下:

version : '3' services: demo2: build: context: . #代表上下文当前目录 dockerfile: DockerFile #DockerFile的文件名字 ports: #映射端口 - "8080:8080" # volumes: #映射卷 # - .:/vol/development depends_on: #代表项目启动依赖 mysql_c这个容器,会先启动mysql_c这个容器 - mysql_a mysql_a: #docker的容器名称,其他应用可以通过mysql_c通信这个容器 image: mysql:5.7 #需要下载镜像 mysql ports: - "3306:3306" environment: #mysql的一些参数 MYSQL_DATABASE: docker #mysql启动后会默认创建一个docker的database MYSQL_ROOT_PASSWORD: 123456 #root的密码 MYSQL_ROOT_HOST: '%' #代表任何机器都可以连接当前数据库 restart: always #Docker容器重启时,当前容器也会自动重启。

做好这些后,直接使用docker-compoes启动命令。

#启动容器 docker-compose up #后台启动 docker-compose up -d

查看容器进程,使用docker-compose ps

[root@localhost docker]# docker-compose ps Name Command State Ports ---------------------------------------------------------------------------------------- docker_demo_1 java -jar demo-1.0.jar Up 0.0.0.0:8080->8080/tcp docker_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp

查看一下启动效果:能够正常访问接口,并且连接上数据库了。 在这里插入图片描述

其他一些操作命令:

#关闭docker-compose中的这个容器 docker-compose stop #再次启动 docker-compose start 四、遇到的问题记录

运行过程中出现下面错误信息:

[root@localhost docker]# docker-compose up Building demo unknown flag: --iidfile See 'docker build --help'. ERROR: Service 'demo' failed to build : Build failed

解决办法,是因为docker-compose版本太高,建议降低下,版本不一样,配置也是不一样。 重新下载1.25.5版本的docker-compose,问题解决。

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 五、docker、docker-compose、docker swarm和k8s的区别 Docker

Docker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我们使用其他容器技术的核心。

Docker-Compose

Docker-Compose 是用来管理你的容器的,有点像一个容器的管家,想象一下当你的Docker中有成百上千的容器需要启动,如果一个一个的启动那得多费时间。有了Docker-Compose你只需要编写一个文件,在这个文件里面声明好要启动的容器,配置一些参数,执行一下这个文件,Docker就会按照你声明的配置去把所有的容器启动起来,只需docker-compose up即可启动所有的容器,但是Docker-Compose只能管理当前主机上的Docker,也就是说不能去启动其他主机上的Docker容器

Docker Swarm

Docker Swarm 是一款用来管理多主机上的Docker容器的工具,可以负责帮你启动容器,监控容器状态,如果容器的状态不正常它会帮你重新帮你启动一个新的容器,来提供服务,同时也提供服务之间的负载均衡,而这些东西Docker-Compose 是做不到的

Kubernetes

Kubernetes它本身的角色定位是和Docker Swarm 是一样的,也就是说他们负责的工作在容器领域来说是相同的部分,都是一个跨主机的容器管理平台,当然也有自己一些不一样的特点,k8s是谷歌公司根据自身的多年的运维经验研发的一款容器管理平台。而Docker Swarm则是由Docker 公司研发的。

既然这两个东西是一样的,那就面临选择的问题,应该学习哪一个技术呢?实际上这两年Kubernetes已经成为了很多大公司的默认使用的容器管理技术,而Docker Swarm已经在这场与Kubernetes竞争中已经逐渐失势,如今容器管理领域已经开始已经逐渐被Kubernetes一统天下了。所以建议大家学习的时候,应该多考虑一下这门技术在行业里面是不是有很多人在使用。

需要注意的是,虽然Docker Swarm在与Kubernetes的竞争中败下阵来,但是这个跟Docker这个容器引擎没有太大关系,它还是整个容器领域技术的基石,Kubernetes离开他什么也不是。

总结

Docker是容器技术的核心、基础,Docker Compose是一个基于Docker的单主机容器编排工具.而k8s是一个跨主机的集群部署工具,功能并不像Docker Swarm和Kubernetes是基于Dcoker的跨主机的容器管理平台那么丰富。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3