小编Mar*_*les的帖子

Docker Networking已禁用:警告:禁用IPv4转发.网络无法正常工作

主机中的容器"突然"失去与外部世界容器的连接.然而,一些主机被刷新,突然我们遇到以下情况:

  1. 主机可以与其他主机通信.
  2. 在主机中运行的容器无法与其他主机通信.

这是一个例子:

[root@pprdespap322 deploy]# ping ci.docker.company.net
PING pprdespap324.corp.company.net (10.137.55.22) 56(84) bytes of data.
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=1 ttl=64 time=0.282 ms
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=2 ttl=64 time=0.341 ms
^C
--- pprdespap324.corp.company.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.282/0.311/0.341/0.034 ms
Run Code Online (Sandbox Code Playgroud)

现在,从容器本身,我们无法ping同一主机:

[root@pprdespap322 deploy]# docker run -ti quay.io/coreos/registry ping ci.docker.company.net
WARNING: IPv4 forwarding is disabled. Networking will not work.
ping: unknown host ci.docker.company.net
Run Code Online (Sandbox Code Playgroud)

我第一次看到这个警告是在Docker的初始版本中......拥有Docker 1.9.1和1.10.3,如何解决这个问题?

docker docker-networking

81
推荐指数
4
解决办法
6万
查看次数

Dockerfile:Docker构建无法下载软件包:centos-> yum,debian/ubuntu-> apt-get in intranet

问题:任何构建,具有依赖于centos,ubuntu或debian的Dockerfile都无法构建.

环境:我有一台Mac OS X,运行VMWare,客户端为Ubuntu 14.04,运行Docker:

mdesales@ubuntu ~ $ sudo docker version
Client version: 1.1.2
Client API version: 1.13
Go version (client): go1.2.1
Git commit (client): d84a070
Server version: 1.1.2
Server API version: 1.13
Go version (server): go1.2.1
Git commit (server): d84a070
Run Code Online (Sandbox Code Playgroud)

行为:使用"docker build"无法下载包.这里有这样Dockerfile的例子:https://github.com/Krijger/docker-cookbooks/blob/master/jdk8-oracle/Dockerfile,https://github.com/ottenhoff/centos-java/blob/master/Dockerfile

我知道我们可以使用--dns运行容器,但这是在构建期间.

  • CENTOS

    从centos RUN yum安装abc

  • UBUNTU

    从ubuntu RUN apt-get install abc

用户已经报告可能是DNS配置问题,其他人和配置已将Google的DNS服务器注释掉.

Step 2 : RUN yum install -y curl; yum upgrade -y; yum update -y;  yum clean all
 ---> Running in 5f11b65c87b8
Loaded …
Run Code Online (Sandbox Code Playgroud)

dns centos docker linux-containers

33
推荐指数
3
解决办法
4万
查看次数

如何用Jenkins的HTTP_PROXY后面的Dockerfile构建Docker镜像?

构建Docker镜像在桌面上工作没有问题.安装Node.js NPM依赖项正常工作.但是,当使用在公司代理后面托管的持续集成服务器(如Jenkins)时,构建Docker Images会失败.

Node.js NPM依赖项

在构建Node.js pacakges时,命令npm install在克隆GIT依赖项时无法连接到GIT时失败.

e1ce5e8407d1: Already exists
Status: Image is up to date for node:0.10.33
 ---> e1ce5e8407d1
Step 1 : RUN mkdir -p /usr/src/app
 ---> Using cache
 ---> 965cad0c68b0
Step 2 : WORKDIR /usr/src/app
 ---> Using cache
 ---> 4c498f0c07e9
Step 3 : COPY package.json /usr/src/app/
 ---> b0662a8275fb
Removing intermediate container 5aca20551452
Step 4 : RUN npm install
 ---> Running in 7ccf9e5362af
npm WARN package.json newww@2.0.0 No README data
npm WARN package.json Dependency 'async-cache' exists …
Run Code Online (Sandbox Code Playgroud)

git maven npm docker dockerfile

21
推荐指数
4
解决办法
4万
查看次数

SpringBoot 2.3.5执行器不同端口导致FileNotFoundException: /dev/management_stdout

要求

  • 我们需要将执行器端点更改为不同的端口号
  • 更改 的值management.server.port: 8404会导致异常,因为服务器配置新端口以将日志流式传输到/dev/management_stdout应有的位置/dev/stdout(已为服务器配置)。

SpringBoot 2.3.5 设置

buildscript {
    repositories {
        mavenCentral()

        // For src/gradle/tests.gradle
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.3.5.RELEASE")
    }
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-actuator')
}
Run Code Online (Sandbox Code Playgroud)

更改 SpringBoot 执行器

  • 更改端口号如下application.yaml
buildscript {
    repositories {
        mavenCentral()

        // For src/gradle/tests.gradle
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.3.5.RELEASE")
    }
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-actuator')
}
Run Code Online (Sandbox Code Playgroud)

引导期间显示错误

  • 默认记录器正在尝试写入/dev/management_stdout
2020-11-15T17:23:41 ERROR [app=parking-plus-service,prf=default][tid=,sid=,sxp=][cid=] 77926 --- [  restartedMain] o.apache.catalina.valves.AccessLogValve  : Failed to open …
Run Code Online (Sandbox Code Playgroud)

java spring-boot spring-boot-actuator

12
推荐指数
1
解决办法
722
查看次数

Java 8/JDK8 Stream的函数Map/Reduce将List <String>分组为Map <String,List <String >>

Java 8即将发布......在学习Streams的过程中,我进入了一个关于使用一种新方法对字谜进行分组的场景.我面临的问题是我找不到使用map/reduce函数对Strings对象进行分组的方法.相反,我必须创建一个与http://docs.oracle.com/javase/tutorial/collections/streams/reduction.html中记录的类似的方式.

根据文档,我们可以简单地使用LIST.stream().collect(Collectors.groupingBy(POJO :: GET_METHOD)),这样Collectors.groupingBy()将根据使用的方法聚合地图的键.但是,这种方法似乎很难包装简单的String表示.

public class AnagramsGrouping {

  static class Word {

    public String original;

    public Word(String word) {
      original = word;
    }

    public String getKey() {
      char[] characters = input.toCharArray();
      Arrays.sort(characters);
      return new String(characters);
    }

    public String toString() {
      return original;
    };
  }

  public static void main(String[] args) {
    List<Word> words = Arrays.asList(new Word("pool"), new Word("loop"), 
         new Word("stream"), new Word("arc"), new Word("odor"),
         new Word("car"), new Word("rood"), new Word("meats"),
         new Word("fires"), new Word("fries"), new Word("night"),
         new Word("thing"), …
Run Code Online (Sandbox Code Playgroud)

java mapreduce anagram java-8 java-stream

10
推荐指数
1
解决办法
2万
查看次数

Docker:构建完成后如何使用多阶段映像

设想

  • 多阶段构建将多个 Dockerfile 部分合并为一个
  • 中间和最后阶段可以从上层阶段复制文件
  • 建议最后阶段只包含所需的二进制文件。

考虑到这些,我想建立以下

FROM fat-base as build
RUN setup unit test frameworks
RUN setup integration test frameworks
RUN setup functional test frameworks
RUN setup all heavy lifting stuff
CMD test

FROM slim-base
COPY --from=build /runtime/binary /bin/binary
ENTRYPOINT /bin/binary
Run Code Online (Sandbox Code Playgroud)

基础阶段的再利用

  • 我不想在中间阶段运行测试,而是想在图像外运行它们,以便我可以重新排序测试序列并在管道层(Jenkins CI、Travis 等)添加更多开关
  • 我希望能够使用构建的基本图像。
  • 根据测试阶段的建议,Dockerfile.test可以使用辅助。但是,我想维护一个包含所有阶段的 Dockerfile。

这是运行的要求

docker build -t my-binary .
docker run -ti my-binary[0] unit
docker run -ti my-binary[0] integration --all
docker run -ti my-binary[0] functional --only-label=container
Run Code Online (Sandbox Code Playgroud)

  • 这是目前支持的吗?
  • 有解决方法吗?

docker docker-build docker-multi-stage-build

6
推荐指数
1
解决办法
2498
查看次数

Spring Data Rest - 如何在@RepositoryEventHandler中接收标头

我正在使用最新的Spring Data Rest,我正在" 创建之前 " 处理该事件.我的要求是捕获提交给模型" Client " 的POST端点的HTTP Headers .但是,RepositoryEventHandler的接口不会公开它.

@Component
@RepositoryEventHandler
public class ClientEventHandler {

  @Autowired
  private ClientService clientService;

  @HandleBeforeCreate
  public void handleClientSave(Client client) {
    ...
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我们如何处理事件并捕获HTTP标头?我想访问像Spring MVC这样使用@RequestHeader HttpHeaders标头的参数.

spring spring-mvc spring-data spring-data-rest spring-boot

5
推荐指数
1
解决办法
866
查看次数

Jenkins Pipeline Stash可以合并文件吗?

我正在并行处理integrationunit测试。它们都在target目录下生成JUnit和代码覆盖率报告。它们每个的存储名称是,tests-build并且还提供了所包含的资源。

stage('Tests Execution') {
  parallel {
    stage('Execute Unit Tests') {
      steps {
        dockerExecuteBuildStage([ stageName: "unit-tests", dockerTargetDir: "/opt/build/target",
            stashIncludesPattern: "**/target/*", stashName: "tests-build"])
      }
    }

    stage('Execute Integration Tests') {
      when {
        expression { config.load().idpsIsEnabled == false }
      }
      steps {
        script {
          config.concurrentStash("tests-build", "intuit-paas-update.yml")
        }
        dockerExecuteBuildStage([ stageName: "integration-tests", dockerTargetDir: "/opt/build/target",
            stashIncludesPattern: "**/target/*", stashName: "tests-build"])
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

考虑到它们将并行执行,并将用于Jenkins Stash临时存储报告以供以后处理,因此出现以下行为:

问题

  • 并行执行时可以隐藏文件吗?
  • 有没有一种方法可以合并来自2个并行存储的文件?如果名字不冲突?

行为

  • 在一个分支 Safe stashing paas-update.yml in faf7dfb5d4a66b14d5acdae4c46a8b8771b57beb-tests-build...
  • 在另一个分支,我得到了 Warning: …

jenkins jenkins-pipeline

5
推荐指数
0
解决办法
573
查看次数

如何在jenkinsfile /脚本中知道当前版本是重播?

就像在主题中一样-是否有任何方法可以验证当前版本是否是使用“重播”按钮的效果?

jenkins-pipeline

5
推荐指数
1
解决办法
595
查看次数

使用netcat nc创建最小的REST Web服务器

我正在寻找使用nc作为Docker容器的单行的最小REST Web服务器.例如:

* http://localhost/echo/marcello: prints marcello
* http://localhost/date: prints the server's date
* http://localhost/...: others
Run Code Online (Sandbox Code Playgroud)

我正在查看" 使用netcat的最小Web服务器 "这个问题,但它代理了对shell脚本的调用...我只需要一个像这样的一个衬里

while true ; do nc -l -p 1500 -c 'echo -e "HTTP/1.1 200 OK\n\n $(date)"'; done
Run Code Online (Sandbox Code Playgroud)

发布的另一个解决方案很长并且从文件中加载...

rest bash shell netcat

4
推荐指数
1
解决办法
6116
查看次数

在下载资源时,有哪些策略可以使Dockerfile指令缓存无效

我们的一些Docker镜像需要从Nexus服务器或Internet上下载更大的二进制文件,后者负责分发Java,Node.js,Mobile(Android和iOS)应用程序.例如,使用ADD或RUN指令进行下载.

RUN curl -o docker https://get.docker.com/builds/Linux/x86_64/docker-latest
Run Code Online (Sandbox Code Playgroud)

考虑到命令"docker build"将根据文件的mtime查看指令和缓存,在构建这些图像时利用缓存机制的方法是什么,避免重新下载整个二进制文件? /sf/answers/1862888611/.

另一个问题是如果资源发生变化,Docker将不会下载最新版本.

caching build docker dockerfile

4
推荐指数
2
解决办法
1473
查看次数

如何在Jenkins Blue-Ocean Pipelines阶段和参数表单中添加图标?

我们如何对管道和参数表单进行视觉更新?

管道

  • 我想在每个步骤上添加视觉表示
    • 也许在说明中添加图标
    • 粗体或其他方式显示阶段名称

屏幕截图2018年10月31日下午3 16 33

参数表

  • 随着参数列表的增加,每个表单描述都很难阅读。

屏幕截图2018年10月31日下午3 16 33

问题

  • 是否可以添加图像?
  • 是否可以在管道阶段中添加图标或粗体文本?
  • 是否可以在参数表单中添加图标或粗体文本?

jenkins jenkins-pipeline jenkins-blueocean

1
推荐指数
1
解决办法
655
查看次数