Docker 提供了两种方式来备份和同步本地机器上的容器数据,即volume和mount。除了我注意到的一些事情之外,两者的行为方式都相同:
好的,所以我们可以说方法论有一些优点和缺点,但在优化方面仍然存在一些分类或差异。
请提供一个解释性的答案。
因此,在某些方面我很惊喜地看到 Jenkins Docker 插件将 Docker 图像“推送”到我的 Docker 主机金属,但这也令人困惑,因为我的构建是在 Docker 主机金属上运行的 Docker Slave Containers 中进行的。甚至我的 Jenkins master 也在 Docker 容器中运行,而不是直接在金属上运行......
遵循这个流行的Jenkins 主/从指南,我到达了让 Jenkins 构建在临时 Docker 容器中工作的地步。
这意味着当我为 Jenkins 构建我的一些源代码软件组件/服务时,构建在 Jenkins 从属设备中启动,该从属设备恰好是由 Jenkins Docker 插件启动的 Docker 容器。
Jenkins 的工作空间在这个从容器中,安装了 Docker Plugin 的 Jenkins master 会在构建完成后处理这个从容器。请参阅我为帮助解释而制作的图表:
在你消化了这个图之后,一些重要的后续要点:
所以在这个 Docker Slave 中,我的软件组件/服务构建工件被创建,它可以是,例如,一个 .dll 或一个 .war。尽管我的构建工件将是 Docker 映像,但碰巧是这种情况。需要明确的是,我正在一个正在运行的 Docker 容器(Jenkins Slave)中构建一个 Docker 镜像。 …
当我运行时,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) 有各种互联网资源表明,默认情况下,docker 容器限制为 10g。然而,这些解释伴随着docker system info将显示极限的指示。我有 docker 版本 17.05.0-ce,并docker system info没有显示这样的限制,这表明情况已经改变。我有一个构建失败,因为容器中的文件系统操作“空间不足”。那么,我用完的空间在哪里,我该如何分配更多空间?docker info显示aufs,磁盘空间是否位于/var文件系统上?
我正在尝试使我的容器可用于所有设备的网络,而不仅仅是 docker 主机。
我正在尝试使我的容器可用于所有设备的网络,而不仅仅是 docker 主机。
我想制作 docker 配置,以便可以从我的网络中的任何地方访问 docker(在我的情况下是 ssh)。
首先创建一个新的桥接设备。
brctl addbr br-em1
ip 链接设置 br-em1
将此设备添加到您的网桥
使用曾经属于 ens160 的地址配置网桥
ip 地址 del 9.158.143.52/24 dev ens160
ip 地址添加 9.158.143.52/24 dev br-em1
将默认路由移动到网桥
到目前为止一切正常。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)
我看不到推断或指定网桥设备名称的方法,因此我不确定如何以自动方式将其添加到我的信任区域。
我将不胜感激任何帮助。
为了调试,我想跳入我拥有的任何 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。
我正在使用托管在 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) 我在 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) 我怎样才能加速: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 不会改变上述命令的执行时间。
docker ×10
ssh ×3
sftp ×2
bash ×1
bridge ×1
containers ×1
firewall ×1
jenkins ×1
linux ×1
networking ×1
performance ×1
ubuntu ×1
ubuntu-17.04 ×1