在我的Manage Jenkins>中Global Tool Configuration,我已经配置了一个名为"docker"的工具,如下所示:
name: docker
install automatically: CHECKED
docker version: latest
Run Code Online (Sandbox Code Playgroud)
然后我所拥有的jenkinsfile就是以下内容,而不是其他内容:
node {
DOCKER_HOME = tool "docker"
sh """
echo $DOCKER_HOME
ls $DOCKER_HOME/bin/
$DOCKER_HOME/bin/docker images
$DOCKER_HOME/bin/docker ps -a
"""
}
Run Code Online (Sandbox Code Playgroud)
我收到这样的错误" 无法连接到Docker守护程序.这个主机上是否运行了docker守护程序? ".
以下是完整的console log:
Started by user Syed Rakib Al Hasan
[Pipeline] node
Running on master in /var/jenkins_home/workspace/helloDocker
[Pipeline] {
[Pipeline] tool
[Pipeline] sh
[helloDocker] Running shell script
+ echo /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker
/var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker
+ ls /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker/bin/
docker
+ /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker/bin/docker images …Run Code Online (Sandbox Code Playgroud) 我遇到的一种情况是Docker容器必须与未经过docker化的应用程序以及其他主机中的docker容器进行通信。
假设有三个服务器A,B和C。服务器A有两个运行JBoss App Server容器的docker容器。服务器B(非docker主机)具有MySQL DB。服务器C具有另一组容器。
我希望JBoss应用程序服务器容器与驻留在另一台主机中的MySQL DB连接,并从DB中提取信息。JBoss还必须讨论服务器C中的容器。
如何做到这一点?
PS:我是Docker的新手
假设我们有一个包含10个节点,4个管理人员和6个工作人员的测试设置。
当领导者经理失败时,其他3名经理将选择另一名经理作为领导者。
如果这位领导者也失败了,我们将只剩下2名经理。4名其他经理然后说
来自守护程序的错误响应:rpc错误:代码=未知desc =集群没有领导者。在线上的管理人员可能太少。确保一半以上的经理在线。
由于剩下的管理人员不超过一半,因此尽管剩下集群中的2名管理人员,他们将无法选择新的领导者。
我的问题是
我使用的是 Docker 版本 17.12.1-ce Kubernetes 版本 v1.10.11
我的应用程序将 Json 格式的日志打印到控制台。其中一个字段是stackTrace,它可以包含一个巨大的stackTrace。
问题在于日志消息被分成两条消息。因此,如果我查看 /var/lib/docker/containers/ ... .log,我会看到两条消息。我读到这样做是出于安全原因,但我真的不明白我能用它做什么?
我应该切断我的 stackTrace 吗?或者定制尺寸?这是允许的吗?这是处理这个问题的正确方法吗?
p/s 我正在使用 json 文件日志记录驱动程序
我在连接到远程(DigitalOcean)docker 引擎时遇到问题。我所做的是
结果
问题
在为远程引擎创建新上下文之前,我尝试从 Mac 笔记本电脑上的本地客户端运行一些 docker 命令。对我来说有趣的部分是下面的命令都不需要 id_rsa 密码)
docker -H ssh://myuser@droplet_ip ps-> 错误DOCKER_HOST=ssh://myuser@droplet_ip docker ps-> 错误错误
docker -H ssh://myuser@droplet_ip ps
error during connect: Get http://docker/v1.40/containers/json: command [ssh -l myuser -- droplet_ip docker system dial-stdio] has …Run Code Online (Sandbox Code Playgroud) 我正在使用 Docker 来隔离特定进程。该过程在多核虚拟机上重复运行多次。
每个执行时间都通过其挂钟时间来测量并记录。我希望时间差小于 200 毫秒。不幸的是,我发现 Docker 中最佳执行和最差执行之间大约有 1 秒的差异。我不明白为什么。我想将其降低到 < 200 毫秒。
这里,蓝色列代表以毫秒为单位的本机执行时间,这非常一致,而橙色列则显示相同代码作为 Docker 进程运行时的执行时间。
我的目标是在 Docker 中获得一致的执行时间。
这是我的最小可重现示例:
mem.cpp该程序执行内存昂贵的操作需要时间。
#include <bits/stdc++.h>
#include <vector>
using namespace std;
string CustomString(int len)
{
string result = "";
for (int i = 0; i<len; i++)
result = result + 'm';
return result;
}
int main()
{
int len = 320;
std::vector< string > arr;
for (int i = 0; i < 100000; i++) {
string s = CustomString(len);
arr.push_back(s);
} …Run Code Online (Sandbox Code Playgroud) 我有一个基于 ARM 的主板,它只能运行制造商提供的基于特定 buildroot 的发行版。我想尝试在这个板上运行 Docker。
每当我在 Google 搜索中结合 buildroot 和 docker 时,我都会得到解释如何使用 buildroot 创建容器的页面,而不是如何更改 buildroot 以将其用作主机。
谁能指点我一些文档吗?
我正在使用 jenkins 的官方 docker 容器运行 jenkins。我dockerfile按照https://docs.docker.com/engine/installation/linux/debian/ 上的说明进行了以下操作
FROM jenkins:2.32.1
# install docker inside this container
USER root
# Install Docker inside Jenkins
RUN apt-get update
RUN apt-get purge "docker.io*"
RUN apt-get update
RUN apt-get install -y apt-transport-https ca-certificates gnupg2
RUN apt-key adv \
--keyserver hkp://ha.pool.sks-keyservers.net:80 \
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D
RUN echo "deb https://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list
RUN apt-get update
RUN apt-cache policy docker-engine
RUN apt-get update
RUN apt-get install -y docker-engine
RUN gpasswd -a jenkins docker …Run Code Online (Sandbox Code Playgroud) 操作系统:CentOS 7 VM
Docker最新版本
执行的命令:
1) docker swarm init
2) docker swarm join --token SWMTKN-1-3iqtmbz55yvhxkahe2ncs7d9ebxzlzmw1pwhqzvmcemiolef63-3muc4qjs3mbvh53t8ktzzmb22 192.168.10.108:2377
Error: Error response from daemon: error while validating Root CA Certificate: x509: certificate has expired or is not yet valid
Run Code Online (Sandbox Code Playgroud)
如您所见,群连接给了我这个错误。此错误的原因是什么,它是从哪里来的?
关于Aditya
是否有可能启动Docker容器(在CMD中使用某些命令)并确保它不会停留超过指定的时间段?
例如,我有一个Ubuntu容器,我想启动它,执行一些命令并在最后退出(杀死容器).但是这些命令可能包含无限循环或者可能只持续很长时间,所以我想确保Docker容器在指定的时间后自动被杀死.
我有一个后端服务器程序,它使用 Docker 引擎 API (Json API) 启动 docker 容器,我想将每个 docker 容器的 CPU 核心数量限制为例如 1。
Docker Engine API 文档有几个选项来配置容器的 CPU 设置,请参阅https://docs.docker.com/engine/api/v1.24:
"HostConfig": {
"CpuPercent": 80,
"CpuShares": 512,
"CpuPeriod": 100000,
"CpuQuota": 50000,
"CpusetCpus": "0,1",
"CpusetMems": "0,1"
}
Run Code Online (Sandbox Code Playgroud)
我可以使用CpusetCpus它,但这非常麻烦,因为我需要保留将哪些 docker 容器分配给哪些 CPU 核心的列表。(我不关心我的容器运行在哪个 CPU 核心上,我只是想避免它使用超过 1 个 CPU 核心。)
我还可以设置CpuQuota为每个 docker 容器仅使用所有 CPU 核心的 12.5%,这对应于具有 8 个 CPU 核心的服务器上的 1 个 CPU 核心。这种方法的问题在于,如果我在具有不同数量 CPU 核心的不同服务器上运行后端程序,则CpuQuota12.5% 的设置不再对应于 1 个 CPU 核心。
上述两种选择都很麻烦,而且远非理想。一定有更好/更简单的方法来设置每个容器的 CPU 核心数?!
docker ×11
docker-engine ×11
docker-swarm ×2
jenkins ×2
bash ×1
buildroot ×1
containers ×1
devops ×1
host ×1
java ×1
jboss ×1
kubernetes ×1
logging ×1
mysql ×1
ssh ×1
x509 ×1