Docker---Docker安装,Docker上MySQl安装,并将项目部署在Docker上

1,Docker的概念

1,Docker是什么

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker很像集装箱的运作系统,集装箱就是容器,里面就是我们需要的程序,这些集装箱彼此隔离,需要它们的时候,就从货轮上运过来,由码头工人装配到汽车、火车上,然后发往每个项目所在地。

2,Docker的架构

在这里插入图片描述
Docker采用C/S模式(客户端/服务器模式),主要操作有build(构建)、pull(拉取)、run(运行),如用户需要使用mysql,就通过客户端连接主机,主机中的守护进程就会到远程服务注册中拉取mysql,保存到主机中镜像文件中,然后对mysql镜像进行构建,构建完成的镜像就可以创建出mysql容器,运行中的mysql容器就可以为用户提供服务。

2,安装Docker

1,删除旧版本的docker

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine

在这里插入图片描述

2,安装依赖

yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2

在这里插入图片描述

3,安装docker

yum install docker

在这里插入图片描述
注意这里需要输入y,确定安装
在这里插入图片描述

4,启动docker

systemctl enable docker
systemctl start docker

5,查看安装结果,docker的版本信息等

docker version

在这里插入图片描述

6、配置镜像
加速镜像下载,创建或修改 /etc/docker/daemon.json 文件,修改为如下形式

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

7,重启

systemctl restart docker

3,Docker的基本使用

常用的docker命令

docker images			  查看镜像
docker search 镜像名称	    搜索镜像
docker ps				   查看容器
docker stop 容器id		 停止容器
docker rm 容器id			 删除容器
docker rmi 镜像id			 删除镜像
docker run 镜像id			 运行镜像
docker pull 镜像名			拉取镜像
docker build 镜像名 .		创建镜像

1,抓取仓库

docker pull library/hello-world

2,查看镜像

docker images

3,运行镜像

docker run hello-world

在这里插入图片描述

4,Docker安装MySQL

1,安装mysql

docker pull mysql:5.7	

2,运行MySQL镜像

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d cd0f0b1e283d

在这里插入图片描述

-p 后面的端口是本机端口,映射到docker中MySQL的3306端口,后面设置了root密码
-d 是后台运行
cd0f0b1e283d为镜像ID
3,查看容器ID

docker ps

4,上传数据库脚本到Linux,然后将脚本复制到docker的root目录中

docker cp aigou_eshop.sql cd0f0b1e283d:\root

在这里插入图片描述

5,进入docker容器

docker exec -it  120c8c9c846f bash

在这里插入图片描述
6,进入MySQL

mysql -uroot -p123456

7,设置编码,创建数据库

set names utf8;
create database aigou_eshop;
use aigou_eshop;

8,导入sql脚本

source /root/bookdb.sql;

9,修改远程访问权限

select host,user,plugin,authentication_string from mysql.user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

在这里插入图片描述

10, 退出mysql和docker

exit

5,在Docker上部署SpringBoot项目

1,修改pom文件
首先在springboot项目的pom.xml文件中添加Docker镜像名称。这里直接命名为了springboot,比较好记

<properties>
    <docker.image.prefix>springboot</docker.image.prefix>
</properties>

2,在plugin中添加docker构建插件

 <!-- Docker maven plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
        <!-- Docker maven plugin -->

3,创建DockerFile文件

注意:这里的DockerFile不要任何后缀名
FROM java:8
VOLUME /tmp
COPY spring-boot04_mp_vue_elementui-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c "touch /app.jar"
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=test", "--server.port=8080", "> /log/app.log"]

jar文件名,需要换成自己上传的springboot项目打包后的jar文件

讲解:

FROM java:8是获取到远程仓库的jdk1.8镜像。
VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的/tmp。
将项目的jar文件复制为app.jar添加到容器
RUN表示在新创建的镜像中执行一些命令,然后把执行的结果提交到当前镜像。这里使用touch命令来改变文件的修改时间,Docker创建的所有容器文件默认状态都是“未修改”。这对于简单应用来说不需要,不过对于一些静态内容(比如:index.html)的文件就需要一个“修改时间”。
EXPOSE 容器暴露端口
ENTRYPOINT 应用启动命令 参数设定

4,创建dcoker文件夹
将jar与DockerFile都放在该文件夹中,上传到Linux中,并进入该文件夹,运行命令

docker build -f DockerFile -t springboot .

这里的springboot为镜像名称,前面讲到了,将镜像名称改为了springboot

在这里插入图片描述

5,查看镜像

docker images

在这里插入图片描述

6,运行镜像

docker run --rm -p 8080:8080 --link mysql容器ID:localhost docker镜像名称或ID

讲解:

--rm 表示容器会自动删除 ,这里并不会删除镜像,只是删除用过后的容器,防止保存多个重复的容器
-p表示端口映射,冒号左边为docker容器外的端口号,右边为容器内的端口号
-d表示后台运行
--link 表示连接mysql容器(如果项目不需要数据库,可以去掉),冒号左边是mysql容器的id后面是容器的别名,这样jdbcUrl中配置的localhost会转换到mysql的docker容器上

在这里插入图片描述
此时只需要在浏览器上进行访问该项目就可以了,注意将ip换成Linux虚拟机的ip

此时虚拟机上也会出现信息
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值