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

Docker微服务学习笔记1

1.Docker概述

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

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

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

1.1.Docker结构

2019-06-02_Docker微服务学习笔记1_第1张图片
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插件

    com.spotify

    docker-maven-plugin

    0.4.10

    

    java

    example

  

1.3.docker常用命令

2019-06-02_Docker微服务学习笔记1_第2张图片
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 或者更高版本。

2019-06-02_Docker微服务学习笔记1_第3张图片
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 @[email protected] /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/@[email protected]

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

2019-06-02_Docker微服务学习笔记1_第4张图片
image.png

2.6.浏览器测试

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

image.png
image.png

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

2019-06-02_Docker微服务学习笔记1_第5张图片
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,

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

2019-06-02_Docker微服务学习笔记1_第6张图片
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配置

     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.thoughtmechanix

simple-service

0.0.1-SNAPSHOT

jar

Simple Service

Simple Service



    org.springframework.boot

    spring-boot-starter-parent

    1.4.4.RELEASE

    





    

        org.springframework.boot

        spring-boot-starter-web

    





    UTF-8

    1.8

    UTF-8

    com.thoughtmechanix.simpleservice.Application

    johncarnell/tmx-simple-service

    chapter1

    http://192.168.174.138:2375





    

        

            org.springframework.boot

            spring-boot-maven-plugin

        

        

            maven-resources-plugin

            

                

                    copy-resources

                    

                    validate

                    

                        copy-resources

                    

                    

                        ${basedir}/target/dockerfile

                        

                            

                                

                                src/main/docker

                                true

                            

                        

                    

                

            

        

        

            com.spotify

            docker-maven-plugin

            0.4.10

            

                ${docker.image.name}:${docker.image.tag}

                ${basedir}/target/dockerfile

                

                    

                        /

                        ${project.build.directory}

                        ${project.build.finalName}.jar

                    

                

            

        

    


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

2019-06-02_Docker微服务学习笔记1_第7张图片
image.png

5.4.查看操作系统


2019-06-02_Docker微服务学习笔记1_第8张图片
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

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

https://blog.csdn.net/BigData_Mining/article/details/86769696

你可能感兴趣的:(2019-06-02_Docker微服务学习笔记1)