我在使用时没有找到任何方式来订购我的结果 docker ps
在我的情况下,我想通过.Ports订购
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
Run Code Online (Sandbox Code Playgroud)
我如何订购结果?
我正在尝试创建一个符合OpenShift标准的预填充MySQL容器映像.
使用指定用户运行容器(遗憾的是)不是我们的选择.
这是一个问题,因为OpenShift只是创建一些没有用户名的随机UID,因此在启动MySQL服务之前在运行时使用脚本设置用户名不是一种选择.
有没有办法让MySQL与docker容器中的任何随机UID一起运行?
编辑:这背后的问题的想法是能够启动MySQL的集装箱像这样
Dockerfile的randomusermysql:example
FROM mysql:5.7.22
#IMPORTANT: MySQL Container runs init in alphanumerical order!
COPY src/some.sql /docker-entrypoint-initdb.d/
ENV MYSQL_ROOT_PASSWORD='somepw'
RUN mkdir -p /var/lib/mysql2 && \
chown -R mysql:mysql /var/lib/mysql2 && \
chmod -R 777 /var/lib/mysql2 && \
sed -i 's|/var/lib/mysql|/var/lib/mysql2|g' /etc/mysql/mysql.conf.d/mysqld.cnf && \
sed -i 's|exec "$@"||g' /entrypoint.sh && \
/entrypoint.sh mysqld && \
chmod -R 777 /var/lib/mysql2/ && \
chown -R mysql:mysql /var/lib/mysql2 && \
find /var/lib/mysql2/ -name "*.cnf" -exec chmod 775 {} \; && …Run Code Online (Sandbox Code Playgroud) 在过去,我可以简单地做这样的事情:
Dockerfile:
FROM ubuntu
RUN echo "test"
Run Code Online (Sandbox Code Playgroud)
这将输出test到我的外壳。我用它作为调试我的构建的一种方式。
在 docker for windows 的最新稳定版本中,构建输出看起来完全不同,并且没有显示任何命令的任何标准输出。
如何在构建过程中查看任何命令的输出?
对于上面的Dockerfile示例,当前输出如下所示:
[+] Building 4.7s (6/6) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 65B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 2.0s
=> [1/2] FROM docker.io/library/ubuntu@sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c 2.3s
=> => resolve docker.io/library/ubuntu@sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c 0.0s
=> => sha256:f643c72bc25212974c16f3348b3a898b1ec1eb13ec1539e10a103e6e217eb2f1 3.32kB / 3.32kB 0.0s
=> => sha256:da7391352a9bb76b292a568c066aa4c3cbae8d494e6a3c68e3c596d34f7c75f8 28.56MB / 28.56MB …Run Code Online (Sandbox Code Playgroud) 我目前正在使用官方php:7.4-apache映像,我想将一些信息和错误记录到 docker 日志中。
我意识到 PHP 不直接记录,而是记录到 Apache2 服务器,因为这是解释 PHP 的服务器。
尽管如此,我还是尝试了使用官方 docker 文档中的信息的直接方法:
<?php
error_log('testlog', 3, '/proc/self/fd/1');
error_log('testerror', 3, '/proc/self/fd/2');
Run Code Online (Sandbox Code Playgroud)
这给了我一个“无法打开流,文件不存在”的警告。
我还注意到,简单地调用error_log('test')会创建以下日志,而不会写入 stderr:
[Tue Nov 10 11:39:46.005650 2020] [php7:notice] [pid 17] [client 172.25.0.1:56576] test
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚是否有任何特殊的方法可以向 Apache2 stdout/stderr 发送消息,但我找不到任何有用的东西。
有没有办法实现这一点,或者这只是在容器中记录 PHP 的错误方法?
!!编辑:!!
到目前为止,我已经设法发现原始 Dockerfile 中的日志定义在此文件中处理为/dev/stderr& /dev/stdout。
我还发现了以下可能性:
error_log('test', 3, 'php://stdout');
error_log('testerr', 3, 'php://stderr');
Run Code Online (Sandbox Code Playgroud)
但这会产生以下输出:
> test
> 172.25.0.1 - - [18/Nov/2020:13:19:48 +0000] "GET / HTTP/1.1" 200 229 "-" "Mozilla/5.0 (Windows …Run Code Online (Sandbox Code Playgroud) 这个例子: https: //onlinephp.io/c/3af93
<?php
new DateTime("@0.1");
Run Code Online (Sandbox Code Playgroud)
抛出一个错误,PHP 7但PHP 8会成功解析时间戳。
我试图理解为什么它的行为与以前的 PHP 版本不同。查看 PHP 7 与 8 变更日志后,我找不到任何对此行为的直接引用。
这是一个未记录的更改还是与任何不同的内容相关?
我需要知道是否有可能创建一个运行我的 php 应用程序的容器,其中一些 php 文件无法从 Docker 外部访问。
Docker Secret 不能应用于这种情况。
有什么我可能忽略的吗?
编辑:显然这是不可能的,我仍然需要详细解释为什么这是不可能的。
Edit2:我们需要使运行容器的用户无法访问 docker 中的文件(因此无法读取代码)。打开端口 80 通过 apache 执行/运行脚本不是问题。
我想使用证书而不是 Microsoft Graph 的客户端密钥来验证我的守护程序应用程序,并希望了解成功验证所需的确切请求。
所有 Azure AD 配置均已事先使用client-secret. 证书公钥也已提前上传:

我设法创建了这个请求(租户 ID、客户端 ID、证书只是虚拟的)
grant_type: : urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion_type: logon_cert
client_id: my-client-id-from-azure
scope: https://graph.microsoft.com/.default
client_assertionJWT 包含
标头:(x5t 包含上传证书中的 base64 编码证书 sha1 指纹,请参见上图)
{
"typ": "JWT",
"x5t": "QUY4RjBERERGMDBBOURGRUQ0MzkzODRGQTYzMjhFQ0FBRDNBOEUzNw",
"alg": "RS256"
}
Run Code Online (Sandbox Code Playgroud)
有效负载:
{
"iss": "my-client-id-from-azure",
"sub": "my-client-id-from-azure",
"scope": "https://graph.microsoft.com/.default",
"aud": "https://login.microsoftonline.com/my-tenant-id/oauth2/v2.0/token",
"iat": 1625591612,
"nbf": 1625591612,
"exp": 1625595212,
"jti": "some-dynamically-generated-uuid"
}
Run Code Online (Sandbox Code Playgroud)
POST https://login.microsoftonline.com/my-tenant-id/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded; …Run Code Online (Sandbox Code Playgroud) 我们有两个 Keycloak 实例:
两个实例可以直接相互通信,没有任何限制。
是否可以使用公共 Keycloak-A 中的登录表单作为 Keycloak-B 中的用户登录?
通过将 Keycloak-B 添加为 Keycloak-A 上的 IDP,登录请求将被重定向到 Keycloak-B。
无法将领域从 Keycloak-B 导出到 Keycloak-A。
是否可以使用 Keycloak-B 用户登录而无需在 Keycloak-A 上重定向?
我们想创建一个非常慢的查询来在我们的应用程序中测试它.有没有办法让Neo4j查询持续一段特定的秒数?
我想在 JSON 正文中使用注释来进行快速引用,如下所示:
{
/**
* some param info
* param: [
* 1 = value so
* 2 = value that
* ]
*/
"param": [
1
],
/* some param2 info */
"param2": "value",
// pls use this
"param3": [
"values"
//"home"
]
}
Run Code Online (Sandbox Code Playgroud)
在请求发送到服务器之前应该过滤掉评论。