美文网首页
2019-06-02_Docker微服务学习笔记1

2019-06-02_Docker微服务学习笔记1

作者: kikop | 来源:发表于2019-06-02 10:44 被阅读0次

    Docker微服务学习笔记1

    1.Docker概述

    首先,大家需要明确一点,Docker容器不是虚拟机。

    2014年,当我第一次接触Docker的时候,我把它比做一种轻量级的虚拟机。这样做无可厚非,因为Docker最初的成功秘诀,正是它比虚拟机更节省内存,启动更快。Docker不停地给大家宣传,”虚拟机需要数分钟启动,而Docker容器只需要50毫秒”。

    然而,Docker容器并非虚拟机,我们不妨来比较一下它们。

    1.1.Docker结构

    image.png

    从下到上理解上图:

    1.基础设施(Infrastructure)。

    2.主操作系统(Host Operating System)。所有主流的Linux发行版都可以运行Docker。对于MacOS和Windows,也有一些办法”运行”Docker。

    3.Docker守护进程(Docker Daemon)。Docker守护进程取代了Hypervisor,它是运行在操作系统之上的后台进程,负责管理Docker容器。

    4.各种依赖。对于Docker,应用的所有依赖都打包在Docker镜像中,Docker容器是基于Docker镜像创建的。

    5.应用。应用的源代码与它的依赖都打包在Docker镜像中,不同的应用需要不同的Docker镜像。不同的应用运行在不同的Docker容器中,它们是相互隔离的。

    1.2.docker maven插件

    <plugin>

        <groupId>com.spotify</groupId>
    
        <artifactId>docker-maven-plugin</artifactId>
    
        <version>0.4.10</version>
    
        <configuration>
    
        <baseImage>java</baseImage>
    
        <imageName>example</imageName>
    
      </configuration>
    

    </plugin>

    1.3.docker常用命令

    image.png

    //1.重启docker

    sudo systemctl restart docker

    //2.查看docker进程,发现docker守护进程在已经监听2375的tcp端口

    ps -ef |grep docker

    //3.查看安装的images

    docker images

    //4.查看docker版本

    Docker --version

    //5.刷新配置

    Systemctl daemon-reload

    //6.查看端口映射

    Docker ps

    2.Docker安装

    2.1.****前提条件

    Docker maven connection

    https://www.runoob.com/docker/centos-docker-install.html简书:

    https://www.jianshu.com/p/2909593e30ed

    前提条件:

    目前,CentOS 仅发行版本中的内核支持 Docker。

    Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

    Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

    image.png

    从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。

    Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。

    本文介绍 Docker CE 的安装使用。

    移除旧的版本:

    $ sudo yum remove docker \

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

    安装一些必要的系统工具:

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

    添加软件源信息:

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    更新 yum 缓存:

    sudo yum makecache fast

    安装 Docker-ce:

    sudo yum -y install docker-ce

    启动 Docker 后台服务

    sudo systemctl start docker

    测试运行 hello-world

    [root@runoob ~]# docker run hello-world

    [图片上传失败...(image-7d70f4-1559443257010)]

    由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

    2.2.配置国内****镜像

    鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决。

    新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

    请在该配置文件中加入(没有该文件的话,请先建一个):

    $ vim /etc/docker/daemon.json

    {

    "registry-mirrors": ["https://registry.docker-cn.com"]

    }

    2.1.Dockfile

    FROM openjdk:8-jdk-alpine RUN apk update && apk upgrade && apk add netcat-openbsd RUN mkdir -p /usr/local/simple-service ADD @project.build.finalName@.jar /usr/local/simple-service/ ADD run.sh run.sh RUN chmod +x run.sh CMD ./run.sh

    2.2.run.sh

    !/bin/sh echo "********************************************************" echo "Starting simple-service " echo "********************************************************" java -jar /usr/local/simple-service/@project.build.finalName@.jar

    2.3.docker-compose.yml

    服务编排

    version: '2'****services:**** simpleservice:****image: johncarnell/tmx-simple-service:chapter1 ports:- "8080:8080"

    2.4.构建、编译

    执行如下命令(3步顺序):

    //windows

    Mvn clean

    Mvn package

    docker:build

    //linux

    sudo docker run

    -p 192.168.174.138:8006 johncarnell/tmx-simple-service:chapter1

    image.png

    2.6.浏览器测试

    在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。

    image.png image.png

    http://192.168.174.138:8006/hello/nj/kikop

    image.png

    3.Docker安装遇到的问题

    3.1.connection localhost:2375异常

    /usr/lib/systemd/system/docker.service添加属性:

    [Service]

    ExecStart=

    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

    3.1.TLS handshake timeout

    docker默认镜像拉取地址为国外仓库下载速度较慢,则会报错“net/http: TLS handshake timeout”。

    https://registry.docker-cn.com

    build (default-cli) on project simple-service: Exception caught: Get https://registry-1.docker.io/v2/: net/http

    : TLS handshake timeout -> [Help 1]

    docker pull docker.io/linuxserver/nginx

    报:net/http: TLS handshake timeout,

    此时,只需要将拉取地址改为国内镜像仓库即可。

    image.png

    3.3.vmtools安装问题1

    Found VMware Tools CDROM mounted at /run/media/centos/VMware Tools. Ejecting

    device /dev/sr0

    Do:卸载

    rpm -e open-vm-tools-desktop

    ./vmware-install.pl

    4.Intellij项目配置

    4.1.pom文件dockerHost配置

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>com.thoughtmechanix</groupId>
    
    <artifactId>simple-service</artifactId>
    
    <version>0.0.1-SNAPSHOT</version>
    
    <packaging>jar</packaging>
    
    <name>Simple Service</name>
    
    <description>Simple Service</description>
    
    <parent>
    
        <groupId>org.springframework.boot</groupId>
    
        <artifactId>spring-boot-starter-parent</artifactId>
    
        <version>1.4.4.RELEASE</version>
    
        <relativePath/>
    
    </parent>
    
    <dependencies>
    
        <dependency>
    
            <groupId>org.springframework.boot</groupId>
    
            <artifactId>spring-boot-starter-web</artifactId>
    
        </dependency>
    
    </dependencies>
    
    <properties>
    
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
        <java.version>1.8</java.version>
    
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
        <start-class>com.thoughtmechanix.simpleservice.Application</start-class>
    
        <docker.image.name>johncarnell/tmx-simple-service</docker.image.name>
    
        <docker.image.tag>chapter1</docker.image.tag>
    
        <dockerHost>http://192.168.174.138:2375</dockerHost>
    
    </properties>
    
    <build>
    
        <plugins>
    
            <plugin>
    
                <groupId>org.springframework.boot</groupId>
    
                <artifactId>spring-boot-maven-plugin</artifactId>
    
            </plugin>
    
            <plugin>
    
                <artifactId>maven-resources-plugin</artifactId>
    
                <executions>
    
                    <execution>
    
                        <id>copy-resources</id>
    
                        <!-- here the phase you need -->
    
                        <phase>validate</phase>
    
                        <goals>
    
                            <goal>copy-resources</goal>
    
                        </goals>
    
                        <configuration>
    
                            <outputDirectory>${basedir}/target/dockerfile</outputDirectory>
    
                            <resources>
    
                                <resource>
    
                                    <!--作为资源目录:src/main/docker-->
    
                                    <directory>src/main/docker</directory>
    
                                    <filtering>true</filtering>
    
                                </resource>
    
                            </resources>
    
                        </configuration>
    
                    </execution>
    
                </executions>
    
            </plugin>
    
            <plugin>
    
                <groupId>com.spotify</groupId>
    
                <artifactId>docker-maven-plugin</artifactId>
    
                <version>0.4.10</version>
    
                <configuration>
    
                    <imageName>${docker.image.name}:${docker.image.tag}</imageName>
    
                    <dockerDirectory>${basedir}/target/dockerfile</dockerDirectory>
    
                    <resources>
    
                        <resource>
    
                            <targetPath>/</targetPath>
    
                            <directory>${project.build.directory}</directory>
    
                            <include>${project.build.finalName}.jar</include>
    
                        </resource>
    
                    </resources>
    
                </configuration>
    
            </plugin>
    
        </plugins>
    
    </build>
    

    </project>

    5.Linux操作系统基本命令

    5.1.vmware-tools安装

    具体方法则是需要在CentOS系统中安装 vmware-tools,其步骤如下:

    1.启动CentOS(图形界面方式登陆),并且以管理员的身份登陆。

    2.在VMware虚拟机的菜单中点击:虚拟机->安装VMware 工具->install。

    3.CentOS自动挂载VMware Tools的虚拟光驱,并显示在桌面。

    4.进去VMware Tools的虚拟光驱里,把VMwareTools-5.5.1-19175.tar.gz复制到/tmp目录。

    5.进去/tmp目录,把VMwareTools-5.5.1-19175.tar.gz解压到当前目录会产生vmware-tools-distrib文件夹。

    tar zxvf VMwareTools-XXX.tar.gz

    6.进入解压缩后的的vmware-tools-distrib目录

    [root@localhost ~]# cd /tmp

    [root@localhost ~tmp]# cd vmware-tools-distrib

    7.执行vmware-install.pl安裝VMWare Tools8.

    输入:./vmware-install.pl(执行vmware-install.pl文件)。

    8.然后一路“回车”,有时候会提示输入 [yes]

    9. 输入reboot命令(重新启动)。

    10.问题ok。

    5.2.全屏快捷键

    ctrl+alt+enter 组合键就可实现Linux的全屏了。就可以完成全屏操作了

    5.3.linux查看ip

    ip addr

    vi /etc/sysconfig/network-scripts/ifcfg-ens33

    image.png

    5.4.查看操作系统


    image.png

    参考

    1.Spring boot快速入门

    https://blog.csdn.net/hzygcs/article/details/85230526

    2.Spring Boot Reference Guide

    https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/

    https://blog.csdn.net/weixin_41830501/article/details/80926817

    <u>https://www.jianshu.com/p/2909593e30ed</u>

    <u>https://blog.csdn.net/BigData_Mining/article/details/86769696</u>

    相关文章

      网友评论

          本文标题:2019-06-02_Docker微服务学习笔记1

          本文链接:https://www.haomeiwen.com/subject/oftxxctx.html