Docker

1.Docker简介

1.1.为什么会有docker出现

  • Docker出现的背景

    在实际开发过程中,会出现很多环境:开发环境、测试环境以及生产环境。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OQ3OIyMU-1640254447380)(assets/image-20200731133822416.png)]

    那么我们如何解决这个“水土不服”的问题?我们可以将软件带环境安装,来解决这种问题。

  • 带环境安装

    软件可以带环境安装?也就是说,开发人员要交付的是代码和环境,运维人员部署的时候把原始环境一模一样地复制过来。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0SR3h24h-1640254447382)(assets/image-20211118115214657.png)]

  • 总结:开发人员利用 Docker 可以消除“在我的机器上可正常工作”的问题

1.2.什么是Docker?

  • Docker 是一个开源的应用容器引擎

  • 诞生于2013 年初,基于 Go 语言实现,dotCloud 公司出品

  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,实现了“Build,Ship and Run Any App,Anywhere”的目标。

  • Docker从17.03 版本之后分为 CE(Community Edition: 社区版)和EE(Enterprise Edition: 企业版)。

1.3.虚拟机和容器

虚拟机(virtual machine):在一种操作系统里面运行另一种操作系统,比如在Windows 系统里面运行Linux 系统,应用程序对此毫无感知,因为虚拟机跟真实系统一模一样。虚拟机缺点:启动慢,占用资源多。

Linux 容器(Linux Containers,缩写为 LXC):由于虚拟机存在缺点,Linux 发展出了另一种容器虚拟化技术,容器不是模拟一个完整的操作系统,只需要软件工作所需的库资源和设置。

Docker 将应用运行在容器上面,所以可以把Docker看做是mini版的Linux。

1.4.Docker 核心概念

概念说明
docker镜像(Images)软件打包好的用于创建 Docker 容器的模板【类】
docker容器(Container)运行中的镜像称为容器【对象】
docker仓库(Registry)用来保存各种打包好的软件镜像

2.Docker安装

2.1.安装Docker

1、查看内核版本,docker要求linux内核3.8以上

[root@localhost ~]# uname -a

2、把yum包更新到最新

[root@localhost ~]# yum update #可省略

3、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

4、设置yum源为阿里云

[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5、可以查看所有仓库中可用的docker版本

[root@localhost ~]# yum list docker-ce --showduplicates | sort -r

6、安装docker

[root@localhost ~]# yum install docker-ce
或
[root@localhost ~]# yum install docker-ce-18.06.3.ce-3.el7

7、查看docker版本

[root@localhost ~]# docker -v

2.2.启动和关闭

启动:

[root@localhost ~]# service docker start #起动

查看状态:

[root@localhost ~]# service docker status #状态

停止:

[root@localhost ~]# service docker stop #关闭

重启:

[root@localhost ~]# service docker restart #重启docker

设置docker开机自启动:

[root@localhost ~]# systemctl enable docker

2.3.配置阿里云镜像加速

1.登录阿里云(http://dev.aliyun.com)

2.在控制台搜索容器镜像服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ikfWXYJ-1640254447383)(assets/image-20200905162559430.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AoXG5hG9-1640254447385)(assets/image-20200905160938116.png)]

3.找到镜像加速器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lireLFy-1640254447386)(assets/image-20200905163523014.png)]

4、配置镜像加速

[root@localhost ~]# sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://crhn72f8.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
[root@localhost ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://crhn72f8.mirror.aliyuncs.com"]
> }
> EOF
sudo systemctl restart docker{
  "registry-mirrors": ["https://crhn72f8.mirror.aliyuncs.com"]
}
[root@localhost ~]# sudo systemctl daemon-reload
[root@localhost ~]# sudo systemctl restart docker
[root@localhost ~]# 

5.测试

[root@localhost ~]# docker info
... ...
 Registry Mirrors:
  https://crhn72f8.mirror.aliyuncs.com/

3.Docker常用命令

3.1.镜像命令

3.1.1.检索

语法:

docker search IMAGE

案例:

[root@localhost ~]# docker search tomcat
NAME                DESCRIPTION                     STARS        OFFICIAL     AUTOMATED
tomcat              Apache Tomcat is an ...         2823         [OK]       
tomee               Apache TomEE is an ...          82           [OK]      
dordoka/tomcat      Ubuntu 14.04, Tomcat 8 ba...    55                        [OK]
bitnami/tomcat      Bitnami Tomcat Docker Image...  35                        [OK]

3.1.2.拉取

从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去hub.docker.com 搜索对应镜像查看。

语法:

docker pull IMAGE:[TAG]

案例:

[root@localhost ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
e5ae68f74026: Pull complete                                                       5.67MB/31.37MB
37c4354629da: Pull complete 
b065b1b1fa0f: Pull complete 
6954d19bb2e5: Pull complete                                                       2.52MB/8.33MB
6333f8baaf7c: Pull complete 
f9772c8a44e7: Pull complete 
Digest: sha256:2f502d27c3e9b54295f1c591b3970340d02f8a5824402c8179dcd20d4076b796
Status: Downloaded newer image for redis:latest

[root@localhost ~]# docker pull redis:3.0
3.0: Pulling from library/redis
f5cc0ee7a6f6: Pull complete 
5fc25ed18e87: Pull complete 
e025bc8872f6: Pull complete 
77c68b51b836: Pull complete 
7c403ece3755: Pull complete 
0a653bd338f4: Pull complete 
31531fd948c6: Pull complete 
Digest: sha256:730b765df9fe96af414da64a2b67f3a5f70b8fd13a31e5096fee4807ed802e20
Status: Downloaded newer image for redis:3.0

3.1.3.列表

列出本地主机上的镜像

语法:

 docker images

案例:

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              904a98253fbf        12 days ago         680MB
redis               3.0                 c44fa74ead88        4 years ago         91.6MB

3.1.4.删除

使用 docker rmi 命令删除镜像。

语法:

docker rmi IMAGE[:tag]

案例:

[root@localhost ~]# docker rmi redis
Untagged: redis:latest
Untagged: redis@sha256:2f502d27c3e9b54295f1c591b3970340d02f8a5824402c8179dcd20d4076b796
Deleted: sha256:aea9b698d7d1d2fb22fe74868e27e767334b2cc629a8c6f9db8cc1747ba299fd
Deleted: sha256:beb6c508926e807f60b6a3816068ee3e2cece7654abaff731e4a26bcfebe04d8
Deleted: sha256:a5b5ed3d7c997ffd7c58cd52569d8095a7a3729412746569cdbda0dfdd228d1f
Deleted: sha256:ee76d3703ec1ab8abc11858117233a3ac8c7c5e37682f21a0c298ad0dc09a9fe
Deleted: sha256:60abc26bc7704070b2977b748ac0fd4ca94b818ed4ba1ef59ca8803e95920161
Deleted: sha256:6a2f1dcfa7455f60a810bb7c4786d62029348f64c4fcff81c48f8625cf0d995a
Deleted: sha256:9321ff862abbe8e1532076e5fdc932371eff562334ac86984a836d77dfb717f5
[root@localhost ~]# 

3.2.容器命令

3.2.1.新建并启动容器

语法:

docker run [options] IMAGE[:TAG]

OPTIONS说明:有些是一个减号,有些是两个减号

  • –name:为容器指定一个名称
  • -d:后台模式运行容器

案例:

[root@localhost ~]# docker run redis:3.0
[root@localhost ~]# docker run --name redis_1 redis:3.0
[root@localhost ~]# docker run --name redis_2 -d redis:3.0

3.2.2.列出启动容器

语法:

 docker ps [options]

OPTIONS说明:

  • -a :列出当前所有正在运行的容器+历史上运行过的
[root@localhost ~]# docker ps
[root@localhost ~]# docker ps -a

3.2.3.停止容器

语法:

docker stop CONTAINER NAME
[root@localhost ~]# docker stop redis_2

3.2.4.启动容器

语法:

docker start CONTAINER

例如:

[root@localhost ~]# docker start redis_2

3.2.5.删除容器

语法:

docker rm CONTAINER NAME

例如:

[root@localhost ~]# docker rm redis_2

3.2.6.与运行中的容器交互

语法:

docker exec [options] CONTAINER NAME [command]

OPTIONS说明:

  • -i:以交互模式运行容器,通常与-t 连用
  • -t:为容器重新分配一个伪终端,通常与-i 连用

案例:

[root@localhost ~]# docker exec -it redis_2 /bin/bash
root@5a896d980db4:/data# 
root@5a896d980db4:~# pwd
/root
root@5a896d980db4:~# cd /
root@5a896d980db4:/# ll
bash: ll: command not found
root@5a896d980db4:/# ls -l
total 8
drwxr-xr-x.   2 root  root  4096 Jun 20  2017 bin
drwxr-xr-x.   2 root  root     6 Apr 20  2017 boot
drwxr-xr-x.   2 redis redis    6 Jun 23  2017 data
drwxr-xr-x.   5 root  root   340 Dec  4 06:17 dev
lrwxrwxrwx.   1 root  root    34 Jun 23  2017 entrypoint.sh -> usr/local/bin/docker-entrypoint.sh
drwxr-xr-x.   1 root  root    66 Dec  4 06:17 etc
drwxr-xr-x.   2 root  root     6 Apr 20  2017 home
drwxr-xr-x.   1 root  root     6 Jun 23  2017 lib
drwxr-xr-x.   2 root  root    34 Jun 20  2017 lib64
drwxr-xr-x.   2 root  root     6 Jun 20  2017 media
drwxr-xr-x.   2 root  root     6 Jun 20  2017 mnt
drwxr-xr-x.   2 root  root     6 Jun 20  2017 opt
dr-xr-xr-x. 186 root  root     0 Dec  4 06:17 proc
drwx------.   2 root  root    37 Jun 20  2017 root
drwxr-xr-x.   3 root  root    30 Jun 20  2017 run
drwxr-xr-x.   2 root  root  4096 Jun 20  2017 sbin
drwxr-xr-x.   2 root  root     6 Jun 20  2017 srv
dr-xr-xr-x.  13 root  root     0 Dec  4 06:00 sys
drwxrwxrwt.   1 root  root     6 Jun 23  2017 tmp
drwxr-xr-x.   1 root  root    19 Jun 23  2017 usr
drwxr-xr-x.   1 root  root    41 Jun 23  2017 var
root@5a896d980db4:/# exit
exit
[root@localhost ~]# 

3.2.7.查看容器日志

语法:

docker logs CONTAINER NAME

案例:

[root@localhost ~]# docker logs redis_2

4.Docker数据卷

4.1.数据卷概念

  • 我们先来思考几个问题:

    1. docker容器删除后,在容器中产生的数据还在吗? 比如我在redis的容器里面存储了数据,删除了redis容器之后,数据是否还在?

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3vWc19lx-1640254447388)(assets/wpsD564.tmp.jpg)]

    1. docker容器和外部机器可以直接交换文件吗? 比如我们可以在windows里面编写代码之后,直接部署tomcat容器里面吗?

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YFpRbEw4-1640254447389)(assets/wpsD565.tmp.jpg)]

  • 数据卷的概念:

    数据卷是宿主机中的一个目录或文件,数据卷设计的目的在于数据的持久化和共享数据,它完全独立于容器的生存周期;作用是容器数据持久化、外部机器和容器之间数据交换;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cDt3IAPV-1640254447391)(assets/wps1520.tmp.jpg)]

  • 语法:创建容器时,使用 –v 参数 设置数据卷。如果目录不存在,会自动创建。

    docker run ... –v 宿主机目录:容器内目录 ......
    

4.2.容器与宿主机之间的数据共享

  1. 建立一个名为c1的容器,并挂载宿主机目录/root/data_host,对应容器目录/root/data_container

    [root@localhost ~]# docker pull centos:7 #拉取镜像
    [root@localhost ~]# docker run --name c1 -id -v /root/data_host:/root/data_container centos:7 #新建并启动容器
    b17764ac91316795889b674a70de2029a6b2a902023328accf12160c535bfcd8
    [root@localhost ~]# ll
    总用量 8
    -rw-------. 1 root root 1571 10月 19 16:49 anaconda-ks.cfg
    drwxr-xr-x. 2 root root    6 12月  1 17:09 data_host #自动创建data_host
    -rw-r--r--. 1 root root 1619 10月 20 00:53 initial-setup-ks.cfg
    drwxr-xr-x. 2 root root    6 10月 19 17:03 公共
    drwxr-xr-x. 2 root root    6 10月 19 17:03 模板
    ... ...
    [root@localhost ~]# 
    
  2. 在宿主机data_host目录里面创建一个文件,检查容器的data_container目录是否同步

    [root@localhost ~]# cd data_host/
    [root@localhost data_host]# touch a.txt
    [root@localhost data_host]# docker exec -it c1 /bin/bash
    [root@33001b1e7251 /]# cd /root 
    [root@33001b1e7251 ~]# ll
    total 4
    -rw-------. 1 root root 3416 Nov 13  2020 anaconda-ks.cfg
    drwxr-xr-x. 2 root root   19 Dec  1 09:13 data_container
    [root@33001b1e7251 ~]# cd data_container/ #自动创建data_host
    [root@33001b1e7251 data_container]# ll
    total 0
    -rw-r--r--. 1 root root 0 Dec  1 09:13 a.txt #同步a.txt
    [root@33001b1e7251 data_container]# 
    

4.3.容器与容器之间的数据共享

  1. 创建容器c2,挂载data_host数据卷。

    [root@localhost ~]# docker run --name c2 -id -v /root/data_host:/root/data_container centos:7 #新建并启动容器
    
  2. 在c2容器里面创建一个文件,检查c1容器是否同步

    [root@localhost data_host]# docker exec -it c2 /bin/bash
    [root@952232b7e451 ~]# cd /root/data_container/ 
    [root@952232b7e451 data_container]# touch b.txt #创建文件
    [root@952232b7e451 data_container]# exit
    exit
    [root@localhost data_host]# docker exec -it c1 /bin/bash
    [root@33001b1e7251 /]# cd /root/data_container/
    [root@33001b1e7251 data_container]# ll
    total 0
    -rw-r--r--. 1 root root 0 Dec  1 09:13 a.txt
    -rw-r--r--. 1 root root 0 Dec  1 09:50 b.txt #同步文件
    [root@33001b1e7251 data_container]# 
    

5.docker的应用安装

5.1.docker安装mysql

需求:

  • 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server。

问题:

  • 容器内的网络服务和外部机器不能直接通信

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLBXHIjE-1640254447392)(assets/image-20211202142501222.png)]

解决方案:

  • 当容器中的网络服务需要被外部的机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上,外部机器访问宿主机上的端口,从而间接访问容器的服务。(这种操作称为容器映射)。

安装步骤:

  1. 拉取mysql镜像

    [root@localhost ~]# docker pull mysql:5.7
    
  2. 创建容器

    docker run -p 3306:3306 --name mysql \
    -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d \
    -v /usr/local/docker/mysql/logs:/var/log/mysql \
    -v /usr/local/docker/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=1111 \
    -d mysql:5.7
    

    参数说明:

    -p:指定端口映射,宿主机port:宿主机port

    ​ **-e:**配置信息,此处配置mysql的root用户的登陆密码

  3. 修改容器中日志目录的权限

    root@475d266f286c:/# chown -R mysql:mysql /var/log/mysql
    

    说明:安装mysql时会生成mysql:mysql用户组和用户,启动mysql默认是使用mysql用户mysql.cnf

  4. 在宿主机中创建mysql.cnf文件

    [root@localhost conf]# cd /usr/local/docker/mysql/conf/
    [root@localhost conf]# vim mysql.cnf
    [mysqld]
    pid-file = /var/run/mysqld/mysqld.pid
    socket = /var/run/mysqld/mysqld.sock
    datadir = /var/lib/mysql
    log-bin=/var/log/mysql/mysql-bin
    server-id=1
    
  5. 重启容器并测试

5.2.docker安装tomcat

需求:

  • 在Docker容器中部署Tomcat,并通过外部机器访问Tomcat部署的项目。

安装步骤:

  1. 拉取tomcat镜像

    [root@localhost ~]# docker pull tomcat
    
  2. 创建容器

    docker run -p 8080:8080 --name tomcat \
    -v /usr/local/docker/tomcat/webapps:/usr/local/tomcat/webapps \
    -d tomcat
    
  3. 在宿主机中部署工程

    [root@localhost mysql]# cd /usr/local/docker/tomcat/webapps/
    [root@localhost webapps]# cd test
    [root@localhost test]# vim index.html
    <h1>hello,dcoker!!!</h1>
    
  4. 测试

    说明:以后我们只需要把写好的项目发布到宿主机就可以了

5.3.docker安装redis

需求:

  • 在Docker容器中部署Tomcat,并通过外部机器访问Tomcat部署的项目。

安装步骤:

  1. 下载安装包并解压

    [root@localhost upload]# wget http://download.redis.io/releases/redis-3.0.0.tar.gz
    [root@localhost upload]# tar -zxvf redis-3.0.0.tar.gz 
    
  2. 拉取镜像

    [root@localhost ~]# docker pull redis:3.0
    
  3. 拷贝redis.conf

    [root@localhost ~]# cd /usr/local/docker/
    [root@localhost docker]# mkdir -p redis/data
    [root@localhost docker]# mkdir -p redis/conf
    [root@localhost docker]# cp /usr/upload/redis-3.0.0/redis.conf /usr/local/docker/redis/conf/
    
  4. 创建容器

    docker run -p 6379:6379 --name redis \
    -v /usr/local/docker/redis/conf:/etc/redis/redis.conf \
    -v /usr/local/docker/redis/data:/data \
    -d redis:3.0 redis-server /etc/redis/redis.conf
    
  5. 测试

    在这里插入图片描述

6.Docker File

6.1.是什么Docker File?

​ Docker File是用来构建 Docker 镜像的构建文件,是由一系列命令和参数构成的脚本。

​ 从应用软件的角度来看,Docker File、Docker镜像与Docker容器分别代表软件的三个不同阶段,Docker File面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

6.2.Docker File常用指令

  • FROM:指定构建使用的基础镜像,FROM命令必须写在其他的指令前
  • EXPOSE:声明容器对外暴露的端口号
  • ENV:设置环境变量,可以在容器内获取使用
  • WORKDIR:终端默认的工作目录
  • VOLUME :使容器内的一个目录具有持久化存储的功能
  • CMD:指定容器启动时执行的一条命令,如果指定了多条CMD命令,则只有最后一条会被执行;CMD会被 docker run之后的参数替换
  • ENTRYPOINT:同CMD,但docker run之后的参数会传递给ENTRYPOINT形成新的命令组合。
  • RUN:不同于CMD指令,RUN可以在Dockerfile中出现和执行多次
  • ADD:从src复制文件到容器中的dest
  • COPY:类似于ADD,不支持压缩包
  • MAINTAINER:用于为Dockerfile署名
  • ONBUILD:是一个特殊的指令,只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行

6.3.Docker File 入门

6.3.1.hub默认centos

6.3.1.1.测试

[root@localhost ~]# docker run -it centos:7 #运行centos容器
[root@2ec46814342e /]# pwd
/
[root@2ec46814342e /]# vim a.txt
bash: vim: command not found
[root@2ec46814342e /]# ifconfig
bash: ifconfig: command not found

6.3.1.2.问题

  1. 默认工作目录是/
  2. 默认不支持vim
  3. 默认不支持ifconfig

6.3.2.自定义centos

6.3.2.1.需求

  1. 登陆后的默认路径
  2. vim编辑器
  3. 查看网络配置ifconfig支持

6.3.2.2.编写Docker File

准备:

[root@localhost usr]# cd /usr/local/docker
[root@localhost docker]# vim docker-file

Docker File内容:

FROM centos:7 #继承centos:7
MAINTAINER mgw<mgw@126.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH
 
RUN yum -y install vim
RUN yum -y install net-tools

6.3.2.3.构建

语法:

 docker build [OPTIONS] PATH

OPTIONS说明:

  • -f:DockerFile路径
  • -t :自定义镜像名称:TAG

例如:

[root@localhost docker]# docker build -f docker-file -t mycentos:1.0 .

6.3.2.4.测试

[root@localhost docker]# docker run -it --name mycentos mycentos:1.0
[root@1eaed8189758 local]# vim a.txt
[root@1eaed8189758 local]# pwd
/usr/local
[root@1eaed8189758 local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 6  bytes 516 (516.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

6.3.2.5.压缩镜像

如果我们要把镜像给别人使用,需要压缩镜像:

[root@localhost docker]# docker save -o mycentos.1.0.rar mycentos:1.0
[root@localhost docker]# ls
docker-file  mycentos.1.0.rar  mysql  redis  tomcat

6.3.2.5.解压镜像

如果被人要用这个镜像,只需要把这个压缩文件解压即可:

[root@localhost docker]# docker rmi mycentos:1.0 
[root@localhost docker]# docker load -i mycentos.1.0.rar 

6.3.2.5.查看镜像历史变更

[root@localhost docker]# docker history mycentos:1.0

7.Docker部署springboot项目

7.1.开启docker的远程连接访问

项目中使用maven可以通过DockerFile远程连接并构建镜像 ,达到快速测试的目的:

  1. 修改docker.service文件,添加监听 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y5GAaAav-1640254447395)(assets/image-20211206172257547.png)]

  2. 重启docker服务

     systemctl daemon-reload
     systemctl restart docker
    
  3. 测试

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ySOe8WBe-1640254447396)(assets/image-20211206173056232.png)]

7.2.配置idea的远程Docker

  1. 安装docker插件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LAMBHRCz-1640254447397)(assets/image-20211206172608521.png)]

  2. 配置docker地址[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ybk4aewC-1640254447398)(assets/image-20201008165002014.png)]

  3. 测试[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NTX3zYFz-1640254447400)(assets/image-20201008165256386.png)]

7.3.创建Dockerfile

在项目根目录下创建名为Dockerfile的文件:

#指定基础镜像,在其上进行定制
FROM openjdk:8-jre
#挂载目录
VOLUME /usr/local/docker

#复制target/common_eureka-1.0-SNAPSHOT.jar 到容器里
COPY target/common_eureka-1.0-SNAPSHOT.jar eureka.jar

#声明运行时容器提供服务端口
EXPOSE 8761

#指定容器启动程序及参数
ENTRYPOINT ["java","-jar","eureka.jar"]

7.4.打包工程

添加maven打包插件,并把工程打包:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

7.5.运行Dockerfile

右键启动Dockerfile:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-smh5eYX4-1640254447401)(assets/image-20201008200357699.png)]

7.6.测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Nb9UxkB-1640254447402)(assets/image-20201008200232431.png)]


版权声明:本文为ssl267422原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。