CentOs的Docker+本地springBoot-HelloWorld

Docker那么火:学习它

先把腾讯云的服务器换位CentOs7.5

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

 $ uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

$ sudo yum update

3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

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

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

5、设置yum源 

官方源 

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

国内的源,会快很多 

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

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

$ yum list docker-ce --showduplicates | sort -r

 7、安装docker

$ sudo yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

8、启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

9、测试运行 hello-world

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

xshell我记得以前可以高亮的阿,这白字白字的看的头疼,珍爱生命,远离黑底白字。

 

 镜像加速

/etc/docker/daemon.json(Linux)添加下面内容:(没有的话新建这个文件,记得要给他600的权限)

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

其他删除 Docker CE(先不操作)

执行以下命令来删除 Docker CE:

yum remove docker docker-common docker-selinux docker-engine -y
/etc/systemd -name '*docker*' -exec rm -f {} ;
find /etc/systemd -name '*docker*' -exec rm -f {} \;
find /lib/systemd -name '*docker*' -exec rm -f {} \;

三 给docker开启远程访问

1.修改docker配置文件 /usr/lib/systemd/system/docker.service

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

2.重启:

systemctl  daemon-reload
systemctl  restart docker

2.检测:

netstat -anp|grep 2375

四、安装JDK

yum -y install java-1.8.0-openjdk*

配置环境变量
打开 vim /etc/profile
添加一下内容

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
这里需要注意, 这个路径要自己去找找,上面的命令安装openJdk后可能不一样
export PATH=$PATH:$JAVA_HOME/bin 

修改完成之后,使其生效

source /etc/profile

输入java -version 返回版本信息则安装正常。

五、安装Maven

makdir /usr/local/maven3
cd  /usr/local/maven3
wget  http://mirrors.hust.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz

 解压:、

tar zxf apache-maven-3.6.0-bin.tar.gz  apache-maven-3.6.0

配置Maven3的环境变量:

export MAVEN_HOME=/usr/local/maven3
export PATH=${PATH}:${MAVEN_HOME}/bin

生效:

source /etc/profile 

 验证:

发现错误原因是因为:MAVEN_HOME配置错误

cd /usr/local/maven3
mv apache-maven-3.1.1/* .
rmdir apache-maven-3.1.1

mvn -v

改一下maven仓库地址吧:

修改conf/settings.xml文件

    <mirror>
       <id>maven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

六、新建一个springBoot HelloWorld(以Idea为例,在windows上)

 

 

 把controller写了zzu.zwl.controller: 

package zzu.zwl.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by zwl on 2018/12/9.
 * May god bless me
 *
 * @Auther: WenliangZhang
 * @Description zzu.zwl.controller
 * @version: 1.0
 */

@RestController
@RequestMapping("/")
public class HelleController {

       @GetMapping("/hello")
    public String method(){
           return  "HelloWorld-Docker"+new Date().toString();
      }
}

 运行一下试试: http://localhost:8080/hello

Spring Boot 项目添加 Docker 支持

plugins 中添加 Docker 构建插件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>zzu.zwl</groupId>
    <artifactId>helloworld</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>helloworld</name>

    <description>docker Spring Boot helloworld</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>

    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!--这是原有的spring boot插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--新增的docker maven插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <!--docker镜像相关的配置信息-->
                <configuration>
                    <!--镜像名,这里用工程名-->
                    <imageName>${project.artifactId}</imageName>
                    <!--Dockerfile文件所在目录-->
                    <dockerDirectory>${project.basedir}/src/main</dockerDirectory>
                    <!--TAG,这里用工程版本号-->
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <!--构建镜像的配置信息-->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

        </plugins>

    </build>


</project>

在目录src/main/docker下创建 Dockerfile 文件,Dockerfile 文件用来说明如何来构建镜像。

FROM java:8
ENV ARTIFACTID helloworld   
ENV ARTIFACTVERSION 0.0.1-SNAPSHOT
VOLUME /tmp
ENV HOME_PATH /home

ADD     $ARTIFACTID-$ARTIFACTVERSION.jar   $HOME_PATH/app.jar

WORKDIR $HOME_PATH

ENTRYPOINT ["java","-jar","app.jar"]

这个 Dockerfile 文件很简单,构建 Jdk 基础环境,添加 Spring Boot Jar 到镜像中,简单解释一下:

  • FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
  • ADD ,拷贝文件并且重命名
  • ENTRYPOINT  启动是执行的命令
  • ENV两个变量是跟项目有关的

这样 Spring Boot 项目添加 Docker 依赖就完成了。

然后将项目打包传入CentOs服务器下的 /opt/MyWork/ 目录下,没有的话新建一个。

七、在CentOs上构建镜像(制定Dockerile方式):

先解压刚才的文件:

unzip  helloworld.zip

 

 

cd  helloworld
 mvn -f pom.xml clean package -DskipTests docker:build
这里是一系列docker命令

然后maven 会去下载各种依赖jar包,然后再运行docker:build命令

构建完成后:

然后运行:

docker run --name demo002 -p 8080:8080 helloworld:0.0.2-SNAPSHOT

然后测试:

 

至此终于在linux上运行成功了docker springBoot HelloWorld。

八、那么如果windows一件发布到centos上呢? 

前文提过开放了docker的远程端口2375,这里先把腾讯云的2375端口策略开放了。

验证:

然后只需在configuration中加一个dockerHost就可以:

然后在本地 

 mvn clean package docker:build -DskipTests

去服务器查看

成功了 

九、下面介绍用Idea 的Docker integration 管理Docker ,idea版本是2017

 

 然后可以进行对 容器和镜像的管理了。

那么如何用阿里云的仓库呢?

十、使用阿里云的仓库和CA证书验证

注册和登录阿里云

使用阿里云镜像仓库前,需要在阿里云网站注册一个账号,请您自行完成注册登录,此处不赘述了;

创建命名空间和镜像仓库

  1. 在阿里云首页的”产品”菜单下,找到”容器镜像服务”,然后点击跳转,如下图: 
    这里写图片描述
  2. 新的页面中,点击”管理控制台”,如下图: 
    这里写图片描述

在控制台页面中,按照下图操作,创建一个命名空间bolingcavalry: 
这里写图片描述

在控制台页面中,按照下图操作,选一个近的仓库,再点击”创建镜像仓库”按钮开始创建镜像仓库: 
这里写图片描述

 

参考下图的步骤填写表单,创建一个仓库: 
这里写图片描述

如下图,创建完毕后就能在列表页面看见了,注意红框所示,一定要选择和创建时一样的地区,否则在列表中看不见刚刚创建的仓库: 
这里写图片描述

从列表中我们可以看见,仓库地址是 registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo,记下来后面会用到的;

 以上阿里云创建选自博客,https://blog.csdn.net/boling_cavalry/article/details/78934391

那么我们也可以用idea的插件进行管理吗?答案是错误的,因为阿里云只提供dokcer仓库服务,但是不提供docker服务。因此,不能用插件 Docker integration来进行 镜像等管理。必须下载windows docker客户端本地打包成镜像后,然后推送到阿里云仓库,服务器在使用docker客户端进行pull,进行一键发布。

 

但要是我本地不想下载docker呢?

取一个折中的方法

本地windows---->开放docker命令的远程centOs---> push到阿里云。

原始的开放2375是不加密的,谁都可以调用,我们配置一下加密,好麻烦,为什么不出一个账号密码验证?

参考地址(官方):https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl

tls加密我参考 anyesu 博主的

前言

docker常用详解指令一文中粗粗提了一下, docker是分为客户端和服务端两部分的, 本文将介绍客户端是如何连接服务端的。

连接方式

1. UNIX域套接字

默认就是这种方式, 会生成一个 /var/run/docker.sock 文件, UNIX 域套接字用于本地进程之间的通讯, 这种方式相比于网络套接字效率更高, 但局限性就是只能被本地的客户端访问。

2. tcp端口监听

服务端开启端口监听 dockerd -H IP:PORT , 客户端通过指定IP和端口访问服务端 docker -H IP:PORT

通过这种方式, 任何人只要知道了你暴露的ip和端口就能随意访问你的docker服务了, 这是一件很危险的事, 因为docker的权限很高, 不法分子可以从这突破取得服务端宿主机的最高权限。

相关:一个回车键黑掉一台服务器

3. 可以同时监听多个socket

ubuntu@VM-84-201-ubuntu:/usr/anyesu/docker$ sudo dockerd -H unix:///var/run/docker.sock -H tcp://127.0.0.1:2376 -H tcp://127.0.0.1:2377
...
INFO[0004] API listen on 127.0.0.1:2377
INFO[0004] API listen on /var/run/docker.sock
INFO[0004] API listen on 127.0.0.1:2376

启用TLS安全连接

上面介绍了普通的http方式远程连接很不安全, 解决的办法很简单, 启用TLS证书实现客户端和服务端的双向认证, 以此来保证安全性。

创建TLS证书(根证书、服务端证书、客户端证书)

cd /usr/anyesu/docker
# 内容比较多, 就写成一个shell脚本, 将需要绑定的服务端ip或域名做参数传入即可
vi tlscert.sh

脚本内容如下:

#/bin/bash
# @author: anyesu

if [ $# != 1 ] ; then 
echo "USAGE: $0 [HOST_IP]" 
exit 1; 
fi 

#============================================#
#   下面为证书密钥及相关信息配置,注意修改   #
#============================================#
PASSWORD="8#QBD2$!EmED&QxK"
COUNTRY=CN
PROVINCE=yourprovince
CITY=yourcity
ORGANIZATION=yourorganization
GROUP=yourgroup
NAME=yourname
HOST=$1
SUBJ="/C=$COUNTRY/ST=$PROVINCE/L=$CITY/O=$ORGANIZATION/OU=$GROUP/CN=$HOST"

echo "your host is: $1"

# 1.生成根证书RSA私钥,PASSWORD作为私钥文件的密码
openssl genrsa -passout pass:$PASSWORD -aes256 -out ca-key.pem 4096

# 2.用根证书RSA私钥生成自签名的根证书
openssl req -passin pass:$PASSWORD -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem -subj $SUBJ

#============================================#
#          用根证书签发server端证书          #
#============================================#

# 3.生成服务端私钥
openssl genrsa -out server-key.pem 4096

# 4.生成服务端证书请求文件
openssl req -new -sha256 -key server-key.pem -out server.csr -subj "/CN=$HOST"

# 5.使tls连接能通过ip地址方式,绑定IP
echo subjectAltName = IP:127.0.0.1,IP:$HOST > extfile.cnf

# 6.使用根证书签发服务端证书
openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf


#============================================#
#          用根证书签发client端证书          #
#============================================#

# 7.生成客户端私钥
openssl genrsa -out key.pem 4096

# 8.生成客户端证书请求文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr

# 9.客户端证书配置文件
echo extendedKeyUsage = clientAuth > extfile.cnf

# 10.使用根证书签发客户端证书
openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf

#============================================#
#                    清理                    #
#============================================#
# 删除中间文件
rm -f client.csr server.csr ca.srl extfile.cnf

# 转移目录
mkdir client server
cp {ca,cert,key}.pem client
cp {ca,server-cert,server-key}.pem server
rm {cert,key,server-cert,server-key}.pem

# 设置私钥权限为只读
chmod -f 0400 ca-key.pem server/server-key.pem client/key.pem

执行服务端配置

# 给脚本添加运行权限
chmod +x tlscert.sh
HOST_IP=127.0.0.1
./tlscert.sh $HOST_IP
# 客户端需要的证书保存在client目录下, 服务端需要的证书保存在server目录下
sudo cp server/* /etc/docker
# 修改配置
sudo vi /etc/default/docker
# 改为 DOCKER_OPTS="--selinux-enabled --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H=unix:///var/run/docker.sock -H=0.0.0.0:2375"

# 重启docker
sudo service docker restart

关于Ubuntu 16.04.2 LTS 下DOCKER_OPTS不生效的问题解决

接着按之前的方式连接服务端就出错了

ubuntu@VM-84-201-ubuntu:/usr/anyesu/docker$ docker -H tcp://127.0.0.1:2375 version
Get http://127.0.0.1:2375/v1.29/version: malformed HTTP response "\x15\x03\x01\x00\x02\x02".
* Are you trying to connect to a TLS-enabled daemon without TLS?

正确的访问方式:

# 客户端加tls参数访问
docker --tlsverify --tlscacert=client/ca.pem --tlscert=client/cert.pem --tlskey=client/key.pem -H tcp://127.0.0.1:2375 version

# Docker API方式访问
curl https://127.0.0.1:2375/images/json --cert client/cert.pem --key client/key.pem --cacert client/ca.pem

# 简化客户端调用参数配置
sudo cp client/* ~/.docker
# 追加环境变量
echo -e "export DOCKER_HOST=tcp://$HOST_IP:2375 DOCKER_TLS_VERIFY=1" >> ~/.bashrc

sudo docker version

切记, 要保护好客户端证书, 这是连接服务端的凭证。另外根证书私钥也要保存好, 泄漏之后就能签发客户端证书了。

认证模式

1. 服务端认证模式

选项说明
tlsverify, tlscacert, tlscert, tlskey向客户端发送服务端证书, 校验客户端证书是否由指定的CA(自签名根证书)签发
tls, tlscert, tlskey向客户端发送服务端证书, 不校验客户端证书是否由指定的CA(自签名根证书)签发

2. 客户端认证模式

选项说明
tls校验服务端证书是否由 公共的CA机构签发
tlsverify, tlscacert校验服务端证书是否由指定的CA(自签名根证书)签发
tls, tlscert, tlskey使用客户端证书进行身份验证, 但不校验服务端证书是否由指定的CA(自签名根证书)签发
tlsverify, tlscacert, tlscert, tlskey使用客户端证书进行身份验证且校验服务端证书是否由指定的CA(自签名根证书)签发

关于远程构建命令

在之前的文章中介绍了使用 docker-compose 构建容器, 学了今天的内容之后可以连接远程 Docker Daemon 进行构建, 不过需要注意的一点是, 构建需要的配置文件、依赖文件等都需要在客户端准备好, 然后会把这些内容传输到服务端执行构建或运行容器。

另外, win10下的WSL也可以安装docker(不过可能是因为早期版本子系统的缘故, docker服务端跑不起来, 只能运行docker客户端, 前段时间的创意者更新中可能有所改进, 不过还未尝试), 通过docker客户端连接远程docker服务"假装"体验下docker也是不错的。



作者:anyesu
链接:https://www.jianshu.com/p/7ba1a93e6de4
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

上个博主的我用了不行,下面参考下一个人的。

打开你的服务器,分别执行下面的命令:

1.先在/usr/local目录下创建个文件夹,这里取名叫ca,然后进入ca文件夹中

mkdir -p /usr/local/ca
cd /usr/local/ca


依次执行下面的命令,需要输入密码,自由指定,两次输入保持一致并记住即可.

openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem


2.根据提示分别输入国家,省份,城市,组织,等一系列信息(可以随便输,无所谓的其实)

openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem


3.生成server-key.pem,输入下面命令敲回车即可.

openssl genrsa -out server-key.pem 4096


4.把下面的$Host换成你自己服务器外网的IP或者域名:比如:openssl req -subj "/CN=192.168.1.0" -sha256...

或:openssl req -subj "/CN=www.laohan.com" -sha256...(这么做前提是你有域名,该域名DNS解析后指向你的服务器)

openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr


5.配置白名单,也就是你接下来要允许那些ip可以连接到服务器的docker,因为已经是ssl连接,所以我推荐配置0.0.0.0,也就是所有Ip都可以连接(但只有拥有证书的才可以连接成功),这样配置好之后公司其他人也可以使用.如果你不想这样,那你可以配置Ip,用逗号分隔开.下面的$Host依旧是你服务器外网的IP或者域名,请自行替换.(这里如果你使用的是服务器Ip的话,请将前面的DNS换成IP,否则配下来连接还是不会成功,如果你使用的是服务器域名,那么就用DNS就可以了)

echo subjectAltName = DNS:$HOST,IP:0.0.0.0 >> extfile.cnf


6.执行下面语句:

echo extendedKeyUsage = serverAuth >> extfile.cnf


7.执行下面语句,然后输入前面设置过的密码,用以生成ca-key.

openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf


8.生成客户端所需的key.pem,依旧在该服务器下执行下面命令,到时候把生成好的几个公钥私钥拷出去即可.

openssl genrsa -out key.pem 4096


9.执行下面命令:

openssl req -subj '/CN=client' -new -key key.pem -out client.csr


10.执行下面命令:

echo extendedKeyUsage = clientAuth >> extfile.cnf


11.生成cert.pem,需要输入前面设置的密码:

openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf


12.删除"废物"

rm -v client.csr server.csr


13.修改权限:

chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem


14.归集服务器证书:

cp server-*.pem  /etc/docker/
cp ca.pem /etc/docker/


15.修改docker配置:

vi /lib/systemd/system/docker.service


将ExecStart=/usr/bin/dockerd
替换为:
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock


16.重新加载daemon并重启docker

systemctl daemon-reload
systemctl restart docker 


17.开放2376端口

/sbin/iptables -I INPUT -p tcp --dport 2376 -j ACCEPT
iptables-save


18.重启docker

service docker restart


19.然后使用工具比如winscp,或者xshell,把你当前所在的/usr/local/ca文件夹里的拷贝到你本地电脑的某个文件夹里:

(我这里本地在桌面新建了一个叫ca的文件夹)

20.至此万事大吉,大吉大利,今晚吃鸡了...下面我们打开IDEA测试一下:

--------------------- 
作者:老汉健身 
来源:CSDN 
原文:https://blog.csdn.net/lovexiaotaozi/article/details/82797236 
版权声明:本文为博主原创文章,转载请附上博文链接!

这是我的截图,也连接成功了(前提是有台服务器然后开放docker remote API)

 可以进行管理

Registry也可以进行连接,这里项目做好之后直接push上去 

 

十一、一切都是为了下面的 

1、开发演示:

这里之前的maven docker插件可以不用了

配置一个idea的Run Configuration就可以

配置环境 

DokerFile文件内容:

FROM java:8
#ENV ARTIFACTID helloworld
#ENV ARTIFACTVERSION 0.0.1-SNAPSHOT
#VOLUME /tmp
ENV HOME_PATH /home

ADD     *.jar   $HOME_PATH/app.jar

WORKDIR $HOME_PATH

ENTRYPOINT ["java","-jar","app.jar"]

然后运行就可以。

可以访问的到

删除镜像时需要三部:

1、停止容器运行

2、删除对应容器

3、删除镜像。 

2、Debug演示:

这里用jvm的remote debug就可以,跟docker没什么关系

只不过要注意的是,这里是两个端口bind。

因此我重新设置了一下:

容器8080绑定服务器80   application.yml文件中的端口为8080

容器8081绑定服务器81  //这里没有使用监听模式,因为springBoot提供的是服务(server=y(yes的意思)),不用阻塞它,监听端口为8081

ENTRYPOINT ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8081","app.jar"]

这里相当于两个端口了,一个端口启动服务8080,一个启动调试8081

然后配置idea的run 环境改为remote debug

配置好后debug,然后他会收集信息收集好久好久

然后我们访问正常的端口就可以了 119.29.110.58/hello

 

 3、与云镜像库的合作

1、push

成功后服务器上输入:

docker images

 

 

2、现在把它们都删了,然后pull

pull成功,然后就可以直接运行

 但这样太慢了,一般都直接上服务器上弄。

 

如果没有服务器,可以安装windows for docker

关于windows7安装docker的

 https://www.cnblogs.com/zeroes/p/win7_install_docker.html

系统环境

1. windows 7 旗舰版64位 i5-2450M CPU  8G内存

2.支持“ Hardware Virtualization Technology”,并且,“virtualization ”可用

获取Docker Toolbox

打开官网https://docs.docker.com/点击Get Docker链接。首先是Docker的两个版本说明及其区别,然后是支持的平台。注意了没有Windows 7,所以不要盲目的就点击下载。

在页面的左侧菜单中点击 Docker Toolbox(legacy) ->Install Toolbox on Windows。这里说了Docker Toolbox提供一种让老的windows操作系统使用Docker的方法,点击 Get Docker Toolbox for Windows 下载206M很快就能下载完。 

 

安装Docker Toolbox

 

桌面上多了几个快捷方式

 

 验证安装

1.双击击“Docker Quickstart Terminal”启动一个终端窗口,自动执行脚本获取boot2docker.iso到本地路径“C:\Users\zhaobaolong\.docker\machine\machines\default”

我这里遇到一个问题:

 Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but CLSID_VirtualBox w/ IUnknown works.
PSDispatch looks fine. Weird.

解决办法:在注册表(regedit.exe)里面进行修改

HKEY_CLASSES_ROOT\CLSID\{00020420-0000-0000-C000-000000000046}
InprocServer32 修改为C:\Windows\system32\oleaut32.dll
HKEY_CLASSES_ROOT\CLSID\{00020424-0000-0000-C000-000000000046}
InprocServer32 修改为C:\Windows\system32\oleaut32.dll

启动成功,C:\Users\zhaobaolong\.docker\machine\machines\default,也生成了一些文件

2.验证安装

docker run hello-world

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值