标签: docker

在 docker 容器中创建卷或挂载有什么区别?

Docker 提供了两种方式来备份和同步本地机器上的容器数据,即volume和mount。除了我注意到的一些事情之外,两者的行为方式都相同:

  1. 卷总是将数据保存在 /var/lib/docker/volumes 中,而挂载点可以在我们想要的任何地方创建。
  2. 如果分配了挂载点的容器也分配了卷,则来自挂载点的所有数据都会自动复制到卷,反之则不然。
  3. 我们无法在 Dockerfile 中描述挂载点,但可以在 Dockerfile 中提供卷。

好的,所以我们可以说方法论有一些优点和缺点,但在优化方面仍然存在一些分类或差异。

请提供一个解释性的答案。

containers docker

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

与 Jenkins Docker 插件和 Jenkins Docker Slaves 的混淆

因此,在某些方面我很惊喜地看到 Jenkins Docker 插件将 Docker 图像“推送”到我的 Docker 主机金属,但这也令人困惑,因为我的构建是在 Docker 主机金属上运行的 Docker Slave Containers 中进行的。甚至我的 Jenkins master 也在 Docker 容器中运行,而不是直接在金属上运行......

遵循这个流行的Jenkins 主/从指南,我到达了让 Jenkins 构建在临时 Docker 容器中工作的地步。

这意味着当我为 Jenkins 构建我的一些源代码软件组件/服务时,构建在 Jenkins 从属设备中启动,该从属设备恰好是由 Jenkins Docker 插件启动的 Docker 容器。

Jenkins 的工作空间在这个从容器中,安装了 Docker Plugin 的 Jenkins master 会在构建完成后处理这个从容器。请参阅我为帮助解释而制作的图表:

在此处输入图片说明

在你消化了这个图之后,一些重要的后续要点:

  • 此时 Jenkins Master 和 Jenkins Slave 运行在同一个 Docker Host Metal 上,因为我才刚刚开始运行这个系统
  • 我正在使用 Docker Plugin 和 SSH Slaves 插件来完成这个设置

所以在这个 Docker Slave 中,我的软件组件/服务构建工件被创建,它可以是,例如,一个 .dll 或一个 .war。尽管我的构建工件将是 Docker 映像,但碰巧是这种情况。需要明确的是,我正在一个正在运行的 Docker 容器(Jenkins Slave)中构建一个 Docker 镜像。 …

linux jenkins docker

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

Docker 在 Ubuntu 中抛出两个与 cgroup rt period/runtime 相关的警告

当我运行时,docker &我得到:

INFO[0000] libcontainerd: new containerd process, pid: 3091 
INFO[0000] [graphdriver] using prior storage driver: aufs 
INFO[0000] Graph migration to content-addressability took 0.00 seconds 
WARN[0000] Your kernel does not support cgroup rt period 
WARN[0000] Your kernel does not support cgroup rt runtime 
INFO[0000] Loading containers: start.
Run Code Online (Sandbox Code Playgroud)

我也收到所有这些警告:

WARN[0000] libcontainerd: client is out of sync, restore was called on a fully synced container (8564990571b56c26f32872031507e77f786b870b27ed3f0b80eebe127ce65164). 
WARN[0000] libcontainerd: failed to retrieve container 8564990571b56c26f32872031507e77f786b870b27ed3f0b80eebe127ce65164 state: rpc error: code = 2 desc = …
Run Code Online (Sandbox Code Playgroud)

ubuntu docker ubuntu-17.04

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

在 Docker 17 中,如何为容器分配磁盘空间?

有各种互联网资源表明,默认情况下,docker 容器限制为 10g。然而,这些解释伴随着docker system info将显示极限的指示。我有 docker 版本 17.05.0-ce,并docker system info没有显示这样的限制,这表明情况已经改变。我有一个构建失败,因为容器中的文件系统操作“空间不足”。那么,我用完的空间在哪里,我该如何分配更多空间?docker info显示aufs,磁盘空间是否位于/var文件系统上?

docker

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

将 docker 容器连接到本地网络

我想做什么

我正在尝试使我的容器可用于所有设备的网络,而不仅仅是 docker 主机。

信息

  • 我的网络子网是 9.158.143.0/24
  • 我的网关是 9.1158.143.254
  • 我的 docker 主机 IP 是 9.158.143.52 主接口 (ens160)
  • 我的容器 IP 是 9.158.143.65
  • docker-pid 是 docker 进程 ID
  • docker id 是 docker ip

我想做什么

我正在尝试使我的容器可用于所有设备的网络,而不仅仅是 docker 主机。

我想制作 docker 配置,以便可以从我的网络中的任何地方访问 docker(在我的情况下是 ssh)。

到目前为止的步骤

  1. 首先创建一个新的桥接设备。

    • brctl addbr br-em1

    • ip 链接设置 br-em1

  2. 将此设备添加到您的网桥

    • brctl addif br-em1 ens160
  3. 使用曾经属于 ens160 的地址配置网桥

    • ip 地址 del 9.158.143.52/24 dev ens160

    • ip 地址添加 9.158.143.52/24 dev br-em1

  4. 将默认路由移动到网桥

    • ip route del 默认
    • ip route 通过 9.158.143.254 dev br-em1 添加默认值

到目前为止一切正常。docker …

networking ssh linux-networking docker

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

如何在用户定义的 Docker 桥上配置防火墙?

我使用 docker 命令创建了一个用户定义的网桥:

docker network create --driver bridge mynetwork
Run Code Online (Sandbox Code Playgroud)

此命令导致创建了一个网桥,如下所示netstat -i:

Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
br-000f1  1500        0      0      0 0             0      0      0      0 BMRU
Run Code Online (Sandbox Code Playgroud)

与我之前信任docker0网桥的方式相同,我需要将此新网桥添加到我的防火墙信任区域:

firewall-cmd --permanent --zone=trusted --add-interface=Docker0
Run Code Online (Sandbox Code Playgroud)

我看不到推断或指定网桥设备名称的方法,因此我不确定如何以自动方式将其添加到我的信任区域。

我将不胜感激任何帮助。

firewall bridge docker

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

docker exec 交互式 bash 与 init 命令

为了调试,我想跳入我拥有的任何 docker 容器,并立即在我的交互式 bash shell 上设置一些细节。出于某种原因,下面的 --init-file 样式现在正在工作。

与许多事情一样,我想这是我遗漏的某种转义序列问题。有什么建议?

docker exec -it mycontainer bash --init-file <(echo "PS1='\w\$ '; TERM=xterm256; alias ls='ls -GFh'")
Run Code Online (Sandbox Code Playgroud)

--init-file 中的任何命令都不会应用于在容器中启动的 bash shell。

bash docker

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

sftp 连接在正确密码后关闭

我正在使用托管在 EC2/AWS 上的 debian 上的 openssh-server 在端口 10022 上运行 sftp 服务器。我为单个用户配置了基于密码的身份验证,但在我提交正确的密码后,服务器连接立即关闭。这是 sftp 客户端的输出:

steve@localhost's password: 
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
Authenticated to localhost ([127.0.0.1]:10022).
debug2: fd 4 setting O_NONBLOCK
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
Connection to localhost closed by remote host.
Transferred: sent 1972, received …
Run Code Online (Sandbox Code Playgroud)

ssh sftp amazon-web-services docker

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

无法从本地主机外部使用密码身份验证进行 SFTP

我在 Kubernetes 上部署的 SFTP 服务器遇到了一个奇怪的问题。我怀疑这个问题与 sshd_config 有关,所以我想我会在这里问(已经研究了一段时间的文档,也只是盲目地尝试,但没有任何效果)。

我已经在 Kubernetes 集群中设置了一个 SFTP 服务器,使用与这里隐藏的配置类似的配置:https : //github.com/mikeghen/kubernetes-gcs-sftp

它实际上在 minikube 本地工作得很好!

当我将它部署到我在 Google Kubernetes Engine 上的集群时,我遇到了一些问题。但我认为这与 K8S 无关,我认为与 SSH 相关。

不幸的是,当我尝试从外部 IP 访问 SFTP 服务器时,我被迫使用公钥身份验证(我只想使用密码身份验证)。我用

sftp -vvv -P 22 partner2@35.xx.xx.xx
Run Code Online (Sandbox Code Playgroud)

并得到

OpenSSH_7.5p1, LibreSSL 2.5.4
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 52: Applying options for *
debug2: resolving "34.xx.xx.xx" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 34.xx.xx.xx [34.xx.xx.xx] port 22.
debug1: Connection established.
debug1: identity file /Users/mikeghen/.ssh/id_rsa type 1
debug1: …
Run Code Online (Sandbox Code Playgroud)

ssh sftp docker google-kubernetes-engine

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

Docker 启动时间

我怎样才能加速:docker run和docker exec命令?

运行命令需要 0.02 秒的用户时间,0.02 秒的系统时间(在我的情况下可以),但每个大约需要 0.5 秒的实时时间(不可接受)。

例如:

$ time sudo docker run --cap-add SYS_ADMIN -i -t --memory=100000k --memory-swap=100000k -d -w /tmp -v /home/asd:/tmp my_image
187d****5037
sudo docker run --cap-add SYS_ADMIN -i -t --memory=100000k  -d -w /tmp -v    0,02s user 0,02s system 6% cpu 0,496 total
Run Code Online (Sandbox Code Playgroud)

我能否以某种方式加快运行容器的过程,或者至少了解为什么浪费了这段时间?

my_image是从创建的,ubuntu构建的图像大约需要 800 MB。但是从我检查的情况来看,这并不重要 - 将大小图像减小到 200 MB 不会改变上述命令的执行时间。

performance docker

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