标签: docker-machine

Docker 容器内构建的 Golang 二进制文件,还是 Mach-O 可执行格式?

我真的需要一些帮助。我想做的是使用标准 golang:1.5 Docker 映像构建 Go 二进制文件,然后将该二进制文件从容器中复制到基于 busybox 的新的最小 Docker 容器中。使用 Docker 安装的卷将二进制文件从容器中拉出。到目前为止,我遇到了两个问题。

  1. 运行命令时,主机上生成的二进制文件(随后复制到第二个容器中)似乎仍然是 Mach-O 64 位可执行文件file。Docker 容器是否以某种方式从主机获取 GOOS 和 GOARCH?

  2. 当手动运行容器并bash构建 Go 二进制文件时,它现在说它是 ELF 可执行文件,但它是动态链接的。我认为默认情况下构建静态链接的二进制文件?我的这个假设可能是错误的。

预先感谢您可以提供的任何帮助。

编辑:这是我正在使用的命令。希望这能让它更清楚一些

## golang:1.5 base image with WORKDIR set to $GOPATH/src/myproject the source
## for the project was added in when creating the 'mybuild_img' docker image
## GOPATH is set automatically in the golang image.
docker run -i -v `pwd`/jenkins/out:$GOPATH/src/myproject/jenkins/out mybuild_img:latest bash -c 'go build && cp myproject ./jenkins/out'
Run Code Online (Sandbox Code Playgroud)

容器运行完毕后,我在 ./jenkins/out/ …

macos go docker boot2docker docker-machine

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

同一台机器上的多个 docker 客户端

由于我经常使用 docker 和 docker-machine,因此我必须同时使用多个 docker 版本。我们都知道这有多难:

$ docker ps
Error response from daemon: client is newer than server (client API version: 1.23, server API version: 1.22)
Run Code Online (Sandbox Code Playgroud)

所以,我的问题:(如何)是否可以在我的 Ubuntu 16.04 上运行多个版本的 docker 客户端?理想情况下,一旦我输入带有docker-machine.

旁注:我知道如何更新客户端或服务器。但我仍然必须使用不同的版本。

ubuntu docker docker-machine

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

使用 Intellij IDEA 重新加载远程 Spring Boot 应用程序的异常

我正在尝试使用 spring devtools、 docker 和 IntelliJ设置远程 spring-boot 环境。一切从这篇文章开始。不幸的是,它随机失败,但有一个例外。下面是配置:

文件

FROM        java:8

EXPOSE      8888

WORKDIR     /app

ADD         build.gradle    /app/build.gradle
ADD         gradlew         /app/gradlew
ADD         gradle          /app/gradle

ADD         src             /app/src

RUN         ["chmod", "+x", "/app/gradlew"]
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

backend:
  build: .
  env_file: environment
  ports:
    - "8888:8888"
  volumes:
    - ./.gradle-docker:/root/.gradle
  command: "/app/gradlew clean bootRun"
  links:
    - db

db:
  image:  postgres:9.5.3
  env_file: environment
  ports:
    - "5454:5432"
Run Code Online (Sandbox Code Playgroud)

整个应用程序从命令行启动:docker-compose builddocker-compose up命令。

在 IntelliJ 中,我准备了以下 java 应用程序配置: 配置

docker:8888spring 应用程序使用的 docker-machine 和端口的 IP在哪里。配置运行后输出如下:

/\\ …
Run Code Online (Sandbox Code Playgroud)

macos intellij-idea docker spring-boot docker-machine

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

限制 docker 守护进程 CPU 资源

当我这样做时,docker info它给了我以下结果:

OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 2
Total Memory: 7.632 GiB
Run Code Online (Sandbox Code Playgroud)

但我希望 cpu 为 1 而不是 2。如何限制 docker 本身的 CPU?

cpu-usage docker docker-machine

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

--virtualbox-hostonly-cidr 在 docker 机器创建期间做什么?

嗨,我想在 Windows 上创建一个 Docker 机器并拥有 Docker 工具箱并且必须执行此代码

./docker-machine create -d virtualbox  --virtualbox-boot2docker-url https://github.com/boot2docker/boot2docker/releases/download/v1.11.2/boot2docker.iso --virtualbox-memory 3240 --virtualbox-cpu-count 2 --virtualbox-disk-size 30480 --virtualbox-hostonly-cidr "192.168.56.1/24" local
Run Code Online (Sandbox Code Playgroud)

所以我想知道什么是 --virtualbox-hostonly-cidr 并且它做了

官方文档说:

--virtualbox-hostonly-cidr "192.168.99.1/24"                                                         Specify the Host Only CIDR [$VIRTUALBOX_HOSTONLY_CIDR]
Run Code Online (Sandbox Code Playgroud)

我不明白。网络文化低的开发者能否详细解释一下。

virtualbox docker boot2docker docker-machine docker-toolbox

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

由命令行设置的 docker-compose env 文件

所以我想使用自定义 env 文件取决于通过命令行传递的自定义环境变量。

假设我使用 docker-compose run 命令开始我的撰写:

docker-compose run -e ENVIROMENT=local spring-app
Run Code Online (Sandbox Code Playgroud)

然后我想在基于 ENVIROMENT 变量的 docker-compose.yml 文件中使用我的自定义 .env

version: '2.1'
services:

  spring-app:
    build: .
      depends_on:
        docker-mariadb:
          condition: service_healthy
    links:
      - docker-mariadb
    ports:
      - 8080:8080
    environment:
      - SPRING_PROFILES_ACTIVE
      - DATABASE_HOST
      - DATABASE_USER
      - DATABASE_PASSWORD
      - DATABASE_NAME
      - DATABASE_PORT
    env_file:
      - ${ENVIROMENT}.env

  docker-mariadb:
    image: mariadb:latest
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=${DATABASE_PASSWORD}
      - MYSQL_DATABASE=${DATABASE_NAME}
      - MYSQL_PASSWORD=${DATABASE_PASSWORD}
    healthcheck:
      test: "/usr/bin/mysql --user=${DATABASE_USER} --password=${DATABASE_PASSWORD} --execute \"SHOW DATABASES;\""
      interval: 30s
      timeout: 10s
      retries: 5
    env_file:
      - ${ENVIROMENT}.env
Run Code Online (Sandbox Code Playgroud)

我的码头档案: …

docker dockerfile docker-compose docker-machine

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

在 EC2 上使用 docker-compose up 对用户“postgres”进行密码身份验证失败

在由 docker-machine 创建的 EC2 linux 服务器上,当我通过docker-compose up启动 docker postgres:10.6,出现以下循环错误:

FATAL:  password authentication failed for user "postgres"
DETAIL:  Password does not match for user "postgres".
Connection matched pg_hba.conf line 95: "host all all all md5"
Run Code Online (Sandbox Code Playgroud)

如果我手动启动容器,我就不会出现这些错误 => docker run -e POSTGRES_PASSWORD=myPassword postgres:10.6

我的本地 docker 中没有这些错误。

我的 docker-compose :

FATAL:  password authentication failed for user "postgres"
DETAIL:  Password does not match for user "postgres".
Connection matched pg_hba.conf line 95: "host all all all md5"
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这一问题?

postgresql amazon-ec2 docker docker-compose docker-machine

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

docker-compose ps 不显示正在运行的服务

我在远程机器上启动了一个 docker-compose 堆栈,通过 gitlab CI/CD(运行程序连接到远程机器上的 docker 引擎并使用 执行部署docker-compose up -d)。

当我从我的笔记本电脑连接到那台机器时,使用eval docker-machine env REMOTE_ADDRESS,我可以看到 docker 进程正在运行(使用docker ps),而服务堆栈似乎是空的(docker-compose ps)。

我无法docker-compose down用来停止堆栈,并且尝试docker-compose up -d给了我错误

ERROR: for feamp_postgres  Cannot create container for service postgres: Conflict. The container name "/feamp_postgres" is already in use by container "40586885...". You have to remove (or rename) that container to be able to reuse that name.
Run Code Online (Sandbox Code Playgroud)

反过来也是如此,我可以从我的本地笔记本电脑(使用 docker-machine)启动堆栈,但是当尝试执行时 CI/CD 管道失败,docker-compose up -d并出现相同的错误。

这发生在笔记本电脑 (OSX) …

docker docker-compose docker-machine

5
推荐指数
2
解决办法
1290
查看次数

docker-machine + docker-compose + ssl(让我们通过 nginx 和 certbot 加密)

我正在尝试将自动 TLS/SSL 终止添加到通过docker-machine部署的docker-compose 中的 Nginx (DigitalOcean)。

我找到了一些不错的资源 [ humankode/how-to-set-up... , medium/nginx-and-lets-encrypt... ] 关于如何通过 docker-compose 做到这一点,但他们都从在服务器上的观点。我真的很想避免这种情况。我很想在本地,在我的笔记本电脑上做,把它们捆绑在一起,然后寄出去。或者,甚至无需执行任何 ssh 即可远程执行此操作。

几次尝试都失败了,但感觉他们已经接近了。主要障碍似乎是文件/卷。按照medium/nginx-and-lets-encrytp...指南,我在保存 OpenSSL privkey.pem 时遇到问题。另一个教程(humankode),据我所知,在服务器上完成所有工作,这就是卷所在的地方。

我最近的尝试是通过DigitalOcean 教程在机器上设置证书,并尝试将这些包含在我的 docker-compose 构建中。没运气。

有很多修改,但我的设置类似于:

docker-compose.yml

version: '3.7'

services:
  nginx:
    image: nginx:1.15.9-alpine
    container_name: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    restart: always
    volumes:
      - /etc/letsencrypt
      - /var/www/certbot
    ports:
      - "80:80"
      - "443:443"
    command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g …
Run Code Online (Sandbox Code Playgroud)

ssl nginx docker-compose docker-machine lets-encrypt

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

Docker Daemon 和 Docker Engine 有什么区别?

有人可以解释包含 docker 运行时的两者之间的区别吗?

containers docker docker-machine

5
推荐指数
2
解决办法
4487
查看次数