标签: linux-containers

Docker Rails 迁移

我正在尝试使用 docker 和 fig 运行我的 rails 应用程序,它也使用 redis 服务器、mongodb、postgres 和 nginx,这是我的 fig.yml 的样子:

pg:
  image: docker-index.my.com/postgres
  ports:
    - 5432
redis:
  image: docker-index.my.com/redis
  ports:
    - 6379
mongodb:
  image: docker-index.my.com/mongodb
  ports:
    - 27017
app:
  build: .
  command: bundle exec rails s
  volumes:
    - .:/beesor
  ports:
    - 3000:3000
  links:
    - pg
    - redis
    - mongodb
  environment:
    RAILS_ENV: production
Run Code Online (Sandbox Code Playgroud)

一切正常,直到启动应用程序的那一刻,当服务器上的 rails 初始值设定项挂钩启动然后我收到有关数据库连接的错误,数据库不存在!当然因为它不是在 Dockerfile 上创建的(见下文)

Dockerfile 内容:

# DOCKER-VERSION 0.10.0
FROM docker-index.my.com/ruby:1.9.3
MAINTAINER my.com

RUN apt-get update -qq && apt-get install -y git-core xvfb curl …
Run Code Online (Sandbox Code Playgroud)

deployment ruby-on-rails docker linux-containers

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

将代码嵌入到 docker 容器中还是将其挂载为卷?

我是 docker 的新用户,即将在生产环境中从虚拟机迁移到容器。但后来,我突然意识到,最适合我的开发和质量保证环境的东西对于生产来说并不理想。

在我的 dev 和 qa 中,我将版本化项目文件夹安装到 python/php(命名它)容器中,并且我将此容器视为我的代码的“运行服务”。这使我不必拥有巨大的容器,因为当我更改代码(git commit 或其他)时,容器历史记录不会更改。

在生产中,理想的情况是我将拥有干净的独立容器,其中包含我的代码,而不是像在开发中那样安装。

那么,我是不是理解错了?你怎么做呢?从开发到生产您使用相同的容器吗?

docker linux-containers

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

为什么 docker 不能在 3.10 之前的内核上运行?

Docker 通常不能在 3.10 之前的 Linux 内核上运行。(在某些情况下,它也可以在3.8内核中运行)。

新内核中哪些功能在旧内核中缺失,导致 docker 无法在其中运行?

linux docker linux-containers

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

什么是在Windows中运行jenkins容器的docker命令

docker run ...运行jenkins容器的正确命令是什么.

  1. 什么是必需的端口?
  2. 如何将卷D:\ jenkins文件夹挂载到jenkins作业配置路径?

我在Windows 10上使用linux容器.

jenkins docker linux-containers docker-for-windows

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

Docker容器立即退出Linux Server

我在Alpine Docker中使用简单的ASP .NET Core 2.0 App构建了一个映像.Wenn我在Windows Power-Shell上运行Linux容器,一切都很好.但是如果我在PuTTY中的Linux服务器上运行Linux容器,容器将立即退出代码139.我使用了以下conmmand:

docker run -it -d -p xxxx:80 imageName

输出:

510e77c3899696823d4f1fba135cbaff3f8b4232deb1a73d41963fc3a8058d81

没有 -d

Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down.
Run Code Online (Sandbox Code Playgroud)

OS:赢10

Docker版本:

Client:
 Version:       17.12.1-ce
 API version:   1.35
 Go version:    go1.9.4
 Git commit:    7390fc6
 Built: Tue Feb 27 22:15:20 2018
 OS/Arch:       linux/amd64

Server:
 Engine:
  Version:      17.12.1-ce
  API version:  1.35 (minimum version 1.12)
  Go version:   go1.9.4
  Git commit:   7390fc6
  Built:        Tue Feb 27 22:17:54 2018 …
Run Code Online (Sandbox Code Playgroud)

docker server linux-containers asp.net-core

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

在Docker Ubuntu容器中启动Xserver

我的容器中安装了最少的Ubuntu,我想让Xserver运行.我需要XServer,因为我的应用程序需要meshlabserver,它本身需要Xserver.

我安装了xserver-xorg和所有其他软件包,但是当我尝试在容器中启动X时

/usr/bin/X :0
Run Code Online (Sandbox Code Playgroud)

它说:

Fatal server error:
(EE) xf86OpenConsole: Cannot open /dev/tty0 (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何启动X服务器?

更新:

相关问题:当我在docker容器中启动X服务器时,主机屏幕关闭

ubuntu xserver lxc docker linux-containers

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

从网络命名空间 Ping 外部 IPv6 地址

我需要从网络命名空间访问外部 IPv6 地址。

在我的主机中,我设置了一个 SIT 隧道 (IPv6-in-IPv4),它对 IPv6 数据包进行隧道传输并通过默认接口 (eth0) 发送它。SIT 隧道依赖于 Hurricane Electric 隧道代理服务。我可以从主机 ping 外部 IPv6 地址。

$ ping6 ipv6.google.com
PING ipv6.google.com(lis01s13-in-x0e.1e100.net) 56 data bytes
64 bytes from lis01s13-in-x0e.1e100.net: icmp_seq=1 ttl=57 time=98.1 ms
64 bytes from lis01s13-in-x0e.1e100.net: icmp_seq=2 ttl=57 time=98.7 ms
Run Code Online (Sandbox Code Playgroud)

以下是有关隧道的一些详细信息:

$ ip -6 route sh
2001:470:1f14:10be::/64 dev he-ipv6  proto kernel  metric 256
default dev he-ipv6  metric 1024
Run Code Online (Sandbox Code Playgroud)

有趣的部分来了。由于超出此问题范围的原因,我需要从网络命名空间内执行相同的操作(ping ipv6.google.com)。

以下是我创建和设置网络命名空间的方法:

ns1.sh

#!/bin/bash

set -x

if [[ $EUID -ne 0 ]]; then
   echo "You must run this …
Run Code Online (Sandbox Code Playgroud)

networking ipv6 linux-containers

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

在 docker 中切换到 Linux Container 时出错

我已经安装了 docker。当它在 Windows 容器中运行时,它工作正常。但是,如果我切换到 Linux 容器,则会出现以下错误。

操作系统:Windows 10 Docker 桌面:2.2.0.3

错误:

Docker.Core.Backend.BackendDestroyException:
Unable to stop Hyper-V VM: Service 'Hyper-V Host Compute Service (vmcompute)' cannot be started due to the following error: Cannot start service vmcompute on computer '.'.
at Enable-MobyLinuxRequiredService, <No file>: line 103
at <ScriptBlock>, <No file>: line 804
   at Docker.Core.Pipe.NamedPipeClient.<TrySendAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Docker.Core.Pipe.NamedPipeClient.Send(String action, Object[] parameters)
   at Docker.Actions.<>c__DisplayClass39_0.<SwitchDaemon>b__0()
   at Docker.ApiServices.TaskQueuing.TaskQueue.<>c__DisplayClass18_0.<.ctor>b__1()
Run Code Online (Sandbox Code Playgroud)

docker windows-10 linux-containers docker-for-windows

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

在 Linux 上从 IIS 迁移到 Docker 时的集成安全性

我当前的服务在 Windows 上的 IIS 中运行。我让它们作为我的域的一部分的服务帐户用户运行。该用户运行该服务的应用程序池,并且还获得了数据库所需的权限。然后我们的连接字符串就可以使用集成安全性来连接到我们的 SQL Server 数据库。

这样做的好处是可以提前设置,并且代码/连接字符串不需要任何密码。

当我转向 docker 容器时,我发现继续使用这是一个困难的情况。我的容器以 root 或其他非公司用户身份运行。所以我不能只使用集成安全性。(即使我可以让我的容器作为域用户运行,我也不知道这是否是一个好的做法。)

在容器中运行时,如何将密码保留在数据库连接字符串和配置之外?

linux integrated-security docker linux-containers

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

如何在 Windows Server 2016 Build 14393 上运行 Docker Linux 容器

我现在的情况是:

  • 我无法选择服务器操作系统(Windows Server 2016 Build 14393)。
  • 并且无法选择容器操作系统(我需要 Linux 容器)。
  • 而且我不需要Docker EE(企业版),CE(桌面版)就可以了。

docker linux-containers windows-server-2016

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