小编Tho*_*eil的帖子

docker run --cpuset 没有任何效果

我通过将 cpuset 指定为 1 个内核来启动一个 docker 容器:

docker run --cpuset-cpus="0"...
Run Code Online (Sandbox Code Playgroud)

第二个通过将 cpuset 指定为 4 个内核:

docker run --cpuset-cpus="0-3"...
Run Code Online (Sandbox Code Playgroud)

我在每个容器内启动了一个加载进程,并监控了两个容器的 CPU 消耗。

加载过程如下:

ffmpeg input > output
Run Code Online (Sandbox Code Playgroud)

我观察到两个容器之间的执行时间没有改善(没有加速)。

你知道为什么没有改进吗?具有 4 个核心的容器应该比 1 个核心容器运行得更快,对吗?

注意:对 1core 容器使用 top

CPU0%=100%
CPU1%=0
CPU2%=0
CPU3%=0
Run Code Online (Sandbox Code Playgroud)

使用 top 作为 4core 容器,docker 随机选择 4 个内核之一来启动进程。有时它会影响每个核心的 30%

CPU0%=0                  CPU0%=30%                   CPU0%=0
CPU1%=100%       or      CPU0%=30%            or     CPU0%=0
CPU2%=0                  CPU0%=30%                   CPU0%=0
CPU3%=0                  CPU0%=30%                   CPU0%=100%
Run Code Online (Sandbox Code Playgroud)

multicore resource-management cpu-usage docker cpuset

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

如何在dockerfile中设置mysql用户名

在ubuntu中安装mysql时apt-get install mysql-server,会在安装过程中询问mysql用户名和密码.

但是当使用dockerfile构建mysql映像时,如何提供用户名和密码?

我尝试使用dockerfile如下:

FROM ubuntu:14.04
apt-get update
apt-get install -y mysql-server
Run Code Online (Sandbox Code Playgroud)

但是在构建映像时,我发现我们可以在没有用户名和密码的情况下登录mysql.

当我使用dockerfile构建我的图像时,如何设置用户名和密码?

mysql docker dockerfile

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

bash中的字符串“显示”隐藏/控制“代码”

Python中有一个非常方便的函数:repr()应用于包含空白字符的字符串时,将打印出该字符串的表示形式,而不会导致任何人为的错误理解。

例如:

$ python -c "print repr(r'''abcde\rfghi\tjklmn\nopqr\bstuv\fwxyz''')"
'abcde\\rfghi\\tjklmn\\nopqr\\bstuv\\fwxyz'
Run Code Online (Sandbox Code Playgroud)

我如何在bash中使用printf做同样的事情?

我正在寻找的理想工具/技巧将完全打印出来

'abcd\refjh\bijk'
Run Code Online (Sandbox Code Playgroud)

用于命令

printf "abcd\refjh\bijk" | <something>
Run Code Online (Sandbox Code Playgroud)

其背后的目的是改进一种测试工具,该工具可以打印两个字符串之间的差异:

http_response_code=$(curl -s --head http://httpbin.org/ | head -1)  # will put "HTTP/1.1 200 OK\r" in $http_response_code
assert_equal "HTTP/1.1 200 OK" "$http_response_code"
> failed: strings do not match
> expected:   'HTTP/1.1 200 OK'
> actual:     'HTTP/1.1 200 OK'
Run Code Online (Sandbox Code Playgroud)

如您所见,当前的实现让用户对失败的原因一无所知,感到困惑。

理想情况下,我希望有以下输出:

> failed: strings do not match
> expected:   'HTTP/1.1 200 OK'
> actual:     'HTTP/1.1 200 OK\r'
Run Code Online (Sandbox Code Playgroud)

当前尝试:

  • printf $'\a\b\e\E\f\n\r\t\v\\\'\"' | cat …

string bash shell quoting ansi-c

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

docker和jwilder/nginx-proxy http/https问题

我在osx上使用docker via boot2docker.

我有2个主机:site1.loc.test.comsite2.loc.test.com指向docker host的ip地址.

两者都应该通过80443端口可用.

所以我jwilder/nginx-proxy用于反向代理目的.

但事实上,当我docker-compose每次尝试通过80端口打开时,我都会运行所有这些,我会重定向到443 (301 Moved Permanently).

可能是我错过了一些jwilder/nginx-proxy配置?

泊坞窗,compose.yml

proxy:
  image: jwilder/nginx-proxy
  volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro
    - certs:/etc/nginx/certs
  ports:
    - "80:80"
    - "443:443"

site1:
  image: httpd:2.4
  volumes:
    - site1:/usr/local/apache2/htdocs
  environment:
    VIRTUAL_HOST: site1.loc.test.com
  expose:
    - "80"

site2:
  image: httpd:2.4
  volumes:
    - site2:/usr/local/apache2/htdocs
  environment:
    VIRTUAL_HOST: site2.loc.test.com
  expose:
    - "80"
Run Code Online (Sandbox Code Playgroud)

https reverse-proxy docker docker-compose jwilder-nginx-proxy

4
推荐指数
2
解决办法
4417
查看次数

为什么我需要在 MySQL 中引用表名“5e09c9c09e9ba0cceccb3701”?

语境

我在我们的应用程序中遇到了一个与 MySQL 表名相关的错误。我们的应用程序将表名生成为 24 位十六进制数字(即:)5e09c9c09e9ba0cceccb3701

有一段时间一切都很好,但突然间我们开始看到某些表名的 SQL 语法错误。这个错误很容易修复:我们需要保护表名。

SQL 语法错误:

select * from 5e09c9c09e9ba0cceccb3701;
Run Code Online (Sandbox Code Playgroud)

没有错误:

select * from `5e09c9c09e9ba0cceccb3701`;
Run Code Online (Sandbox Code Playgroud)

为什么5e09需要保护以开头的表名?

我浏览了 MySQL 文档中的保留字或十六进制文字表示法,但我找不到对5e09SQL 语句中特殊解释的任何解释。

而且,如果有人知道,还有什么其他特殊前缀也可能会破坏 SQL 语句的语法?

mysql sql syntax

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

将Elasticsearch和Kibana配置文件传递给docker容器

我找到了一个运行和的docker image devdb/kibana.但是我想将这两个配置文件传递给这个docker容器(即elasticsearch.yml)和(即config.js)Elasticsearch 1.5.2Kibana 4.0.2ElasticsearchKibana

我可以用这个图像本身吗?或者为此我必须建立一个单独的docker容器?

elasticsearch docker kibana kibana-4

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

无法运行Grails CLI:Grails CLI:从分支内部调用错误的<init>方法

尝试在NetBeans中运行Groovy/Grails应用程序时收到以下错误消息:

Error occurred running Grails CLI: Bad <init> method call from inside of a branch
Run Code Online (Sandbox Code Playgroud)

Grails版本:3.0.4 Java:jdk1.8.0_20

grails

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

Docker --env-file - $ PATH中找不到可执行文件

我想用带有--env-file选项的环境变量来运行我的docker容器,就像docker doc:docker run命令中提到的那样

我尝试使用以下内容创建env.list在我的主目录中命名的文件/home/jw/data:

SSL_CERTIFICATE_PATH=/opt/onlyoffice/Data/certs/onlyoffice.crt
SSL_KEY_PATH=/opt/onlyoffice/Data/certs/onlyoffice.key
SSL_DHPARAM_PATH=/opt/onlyoffice/Data/certs/dhparam.pem
Run Code Online (Sandbox Code Playgroud)

之后我将目录添加/home/jw/data/到我的$PATH环境变量中:

PATH=$PATH:/home/jw/data/; export PATH
Run Code Online (Sandbox Code Playgroud)

在同一个shell上,我启动了这样的docker容器:

sudo docker run -i -t -d --name onlyoffice-document-server onlyoffice/documentserver --env-file /home/jw/data/env.list debian env
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Error response from daemon: Cannot start container 45ff897e0cfdc676f4f0bac98e027e2c567558a173a7f80c02ba6dc86482a176: [8] System error: exec: "--env-file": executable file not found in $PAT
Run Code Online (Sandbox Code Playgroud)

我也尝试设置$PATHunder root并执行上面提到的run命令,并显示相同的错误消息.

我错过了什么?

debian environment-variables docker

3
推荐指数
2
解决办法
2887
查看次数

MySQL 5.0报告"concat不存在"

我有一个复杂串联的查询.如果结果不为空,那么就像连接几个子选择的结果一样.它在我们的运行MySQL 5.1的开发服务器上工作正常(虽然复杂性让我有点不舒服)但我们的生产服务器运行5.0报告

FUNCTION database.concat does not exist
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样?不幸的是,升级不是一个选择,所以除非有人有一个好主意,否则我几乎不会重写这份报告.

查询如下(是的,我意识到我可怕地滥用mysql.让我们暂时把它放在一边.如果有人知道如何通过别名引用子选择方法,这将是方便的,但我从来没有能够做到它,因此重复的subselect.NULL如果有任何参数NULL,concat返回,因此if语句.)

select (concat(if((select 
                       concat(if(b.foo is not null, b.foo, ""), 
                       " ", 
                       if(f.bar is not null, f.bar, ""))
                     from  `foo_table`  as f
                      left join `bar_table` as b
                        on b.SOME_ID = f.SOME_ID
                     where f.STUDENT_ID = t.STUDENT_ID
                       and bar.NewID = t.OldID order by bar.id limit 1) is not null,
                   (select 
                      concat(if(b.foo is not null, b.foo, ""), 
                       " ", 
                       if(f.bar is not null, f.bar, ""))
                     from  `foo_table`  as f
                      left join `bar_table` …
Run Code Online (Sandbox Code Playgroud)

mysql sql select concat function

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