dodd

一、微服务下的Docker介绍和使用场景

1、什么是Dokcer

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

2)使用go语言编写,在LCX(linux容器)基础上进行的封装

简单来说:

1)可以快速部署启动应用
2)实现虚拟化,完整资源隔离
3)一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用)
复制代码
2、为什么要用

1)提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就可以直接启动运行

2)快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过Dokcer快速启动

3)组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用

4)更好的资源隔离和共享

总结一句话:开箱即用,快速部署,可移植性强,环境隔离

3、Linux云服务器Centos7安装Docker实战(阿里云ECS服务安装Docker实战)

Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息

lsb_release -a :用来显示LSB和特定版本的相关信息
复制代码

安装条件:CentOS 7环境,Docker要求64位的系统且内核版本至少为3.10

安装步骤:

1、添加yum源
    # yum install epel-release –y
    # yum clean all
    # yum list
2、安装并运行Docker
    # yum install docker-io –y
    # systemctl start docker
3、检查安装结果    
    # docker info
4、docker hello-work
    # docker run hello-world
复制代码

阿里云安装手册

安装常见问题

run运行原理:

4、Docker常用指令
1、帮助命令
    docker version
    docker info
    docker --help
    
2、镜像命令
    docker images:列出本地主机上的镜像
        -a:列出本地所有的镜像
        -q:只显示镜像ID
        --digests:显示镜像的摘要信息
        --no -trunc:显示完整的镜像信息
    docker search 某个镜像名字
    docker pull 某个镜像名字
    docker rmi 某个镜像名字
复制代码
5、Docker仓库、镜像、容器核心知识讲解

Docker镜像(Docker images):软件打包好的镜像,放在docker仓库中,容器运行时的只读模板,操作系统+软件运行环境+用户程序

Docker容器(Docker containers):镜像启动后的实例称为一个容器,容器是独立运行的一个或一组应用,容器包含了某个应用运行所需要的全部环境

Docker仓库(Docker registeries):用来保存镜像,有公有和私有仓库,好比Maven的中央仓库和本地私服

镜像仓库:(参考)配置国内镜像仓库

对比面向对象的方式:

Dokcer 里面的镜像 : Java里面的类 Class
Docker 里面的容器 : Java里面的对象 Object
通过类创建对象,通过镜像创建容器
复制代码
6、Docker容器常见命令实战(Docker在云服务上的实际应用)

常用命令(安装部署好Dokcer后,执行的命令是docker开头),xxx是镜像名称

docker search xxx :搜索镜像
docker images :列出当前系统存在的镜像
docker pull xxx :拉取镜像
    xxx是具体某个镜像名称(格式 REPOSITORY:TAG)
    REPOSITORY:表示镜像的仓库源,TAG:镜像的标签
    
docker run -d --name "my_image" -p 5672:5672 xxx :运行一个容器
	docker run :运行一个容器
	-d :后台运行
	-p :端口映射
	xxx(格式 REPOSITORY:TAG) :如果不指定tag,默认使用最新的
	--name "xxx" :镜像的别名
			
docker ps :列举当前运行的容器
docker inspect IMAGE_ID :检查容器内部信息
docker rmi IMAGE_ID :删除镜像
docker rmi -f IMAGE_ID :强制删除镜像
docker stop IMAGE_ID :停止某个容器
docker start IMAGE_ID :启动某个容器:
docker rm IMAGE_ID :移除某个容器(容器必须是停止状态)
			
复制代码

更多指令参考文档

7、实战应用之使用Docker部署Nginx服务器
docker search nignx :获取镜像 
docker images :列举镜像
docker pull nignx :拉取镜像 
docker run -d --name "nginx1" -p 8088:80 nginx :启动镜像 
docker run -d --name "nginx2" -p 8089:80 nginx :启动镜像 
docker run -d --name "nginx3" -p 8090:80 nginx :启动镜像 
curl http://127.0.0.1:8088 :访问
复制代码

docker run (首先会从本地找镜像,如果有则直接启动,没有的话,从镜像仓库拉起,再启动)

如果是阿里云服务,记得配置安全组,腾讯云也需要配置,这个就是一个防火墙

8、公司中Docker镜像仓库使用讲解

镜像仓库分类:官方公共镜像仓库和私有镜像仓库

1)公共镜像仓库:

官方:基于各个软件开发或者有软件提供商开发的 非官方:其他组织或者公司开发的镜像,供大家免费试用

2)私有镜像仓库:用于存放公司内部的镜像,不提供给外部试用;

9、高级篇幅之构建自己的镜像仓库(使用阿里云搭建自己的镜像仓库)

阿里云镜像仓库地址

1、点击控制台
2、找到容器镜像服务
3、初次使用会提示开通,然后设置密码
复制代码

使用阿里云私有镜像仓库:

1、登录阿里云Docker Registry
    docker login --username=lingqi18 registry.cn-beijing.aliyuncs.com
    用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码
    
2、从Registry中拉取镜像
    docker pull registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]
    
3、将镜像推送到Registry
    docker login --username=lingqi18 registry.cn-beijing.aliyuncs.com
    docker tag [ImageId] registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]
    docker push registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]
复制代码

容器镜像服务网址

二、SpringCloud和Docker整合部署

1、构建Springboot应用docker镜像

使用Docker的maven插件,构建springboot应用

官方文档

1.1、添加pom文件

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

<build>
    <finalName>docker-demo</finalName>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.3.6</version>
            <configuration>
                <!-- 指定打包的镜像名称 -->
                <repository>${docker.image.prefix}/${project.artifactId}</repository>
                <buildArgs>
                    <!-- 项目打包的名称 -->
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>
    </plugins>
</build>
复制代码

配置讲解:Spotify的docker-maven-plugin插件是用maven插件方式构建docker镜像的。

${project.build.finalName}产出物名称,缺省为${project.artifactId}-${project.version}
复制代码

1.2、创建Dockerfile,默认是根目录,(可以修改为src/main/docker/Dockerfile,如果修改则需要制定路径)

Dockerfile : 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
复制代码

参数讲解:

FROM <image>:<tag> :需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
VOLUME :配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录 
ARG :设置编译镜像时加入的参数, ENV 是设置容器的环境变量
COPY :只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点
ENTRYPOINT :容器启动时执行的命令
EXPOSE 8080 :暴露镜像端口
复制代码

1.3、构建镜像

mvn install dockerfile:build

docker login --username=lingqi18 registry.cn-beijing.aliyuncs.com
docker tag [ImageId] registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]
docker push registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]

docker pull registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]

docker run -d --name myname -p 8099:8080 [ImageId]
复制代码

1.4、查看启动日志

docker logs -f  containerid
复制代码

参考文档

2、实战系列之注册中心打包Docker镜像

转载于:https://juejin.im/post/5ca004606fb9a05e2c5dda18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值