至此登录aws login sso成功。
Successully logged into Start URL: *****\nRun Code Online (Sandbox Code Playgroud)\n从这里我想启动我的服务,该服务需要设置以下带有 AWS 凭证的环境变量:
\nAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN如何将这些变量提取到当前 shell 中?
\n我找到了一个可能适合我的解决方法:我注意到在我登录并运行后,aws sts get-caller-identity它会在目录中创建文件~/.aws,可以使用如下脚本对其进行解析:
#!/usr/bin/env bash\n\nset -e\n\nAWS_ACCESS_KEY_ID=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.AccessKeyId' --raw-output)\nAWS_SECRET_ACCESS_KEY=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.SecretAccessKey' --raw-output)\nAWS_SESSION_TOKEN=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.SessionToken' --raw-output)\n\n>&2 echo "\xe2\x9c\xa8 you need to eval output of this script in your current window:"\n>&2 echo ' eval $('$0')'\n>&2 echo ""\necho "export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}"\necho "export …Run Code Online (Sandbox Code Playgroud) environment-variables command-line-interface amazon-web-services aws-sts aws-sso
在Docker容器中运行了几个进程,它们的PID在容器命名空间中是隔离的,有没有办法弄清楚它们在Docker主机上的PID是什么?
例如,在Docker容器内运行一个Apache Web服务器(我使用Docker Hub中的 Apache + PHP映像),Apache启动时会在容器内创建更多的工作进程.这些工作进程实际上是处理传入的请求.要查看这些进程,我pstree在docker容器中运行:
# pstree -p 1
apache2(1)-+-apache2(8)
|-apache2(9)
|-apache2(10)
|-apache2(11)
|-apache2(12)
`-apache2(20)
Run Code Online (Sandbox Code Playgroud)
父Apache进程在容器进程名称空间内的PID 1上运行.但是从主机的角度来看,也可以访问它,但它在主机上的PID是不同的,可以通过运行docker compose命令来确定:
$ docker inspect --format '{{.State.Pid}}' container
17985
Run Code Online (Sandbox Code Playgroud)
由此我们可以看到容器进程命名空间内的PID 1映射到主机上的PID 17985.所以我可以pstree在主机上运行,列出Apache进程的子代:
$ pstree -p 17985
apache2(17985)???apache2(18010)
??apache2(18011)
??apache2(18012)
??apache2(18013)
??apache2(18014)
??apache2(18164)
Run Code Online (Sandbox Code Playgroud)
由此我假设容器中的PID 1如何映射到主机上的PID 17985,它也映射:
(这允许我从docker容器调试进程,使用仅在主机上可用的工具,而不是容器中的工具,如strace)
问题是我不知道假设pstree在容器和主机中以相同的顺序列出进程是多么安全.
如果有人能够建议一种更可靠的方法来检测Docker容器内运行的特定进程的主机上的PID,那将会很棒.
我在我的Zend Framework 2应用程序中添加了模块ZfcUser.但是我必须使用现有的数据库表,它的列名与ZfcUser的默认表结构略有不同.
在ZfcUser wiki页面中,它表示如果我的模型不符合提供的界面,则可以使用自定义映射器.由于我的数据库表不同于默认值,因此我的用户实体类也与标准ZfcUser\Entity\User不同.但是我可以通过覆盖文件config/autoload/zfcuser.global.php中的设置来告诉ZfcUser轻松使用我自己的类:
'user_entity_class' => 'MyApp\Entity\MyUser',
Run Code Online (Sandbox Code Playgroud)
但到目前为止,我还没有找到告诉ZfcUser使用我的mapper类的简单方法.
我只发现映射器是由ZfcUser\Module :: getServiceConfig()创建的,在其中,我可以看到映射器从其工厂函数返回:
// ...
public function getServiceConfig()
{
return array(
// ...
'factories' => array(
// ...
'zfcuser_user_mapper' => function ($sm) {
$options = $sm->get('zfcuser_module_options');
$mapper = new Mapper\User();
$mapper->setDbAdapter($sm->get('zfcuser_zend_db_adapter'));
$entityClass = $options->getUserEntityClass();
$mapper->setEntityPrototype(new $entityClass);
$mapper->setHydrator(new Mapper\UserHydrator());
return $mapper;
},
// ...
Run Code Online (Sandbox Code Playgroud)
有没有办法让ZfcUser使用我的自定义用户映射器类?
Spring Boot:我想实现以下目标:一些URL路径映射到一个端口,另一些映射到另一个。
换句话说,我想要类似的东西:
public class Controller1 {
@RequestMapping(value="/path1", port="8080") public...
@RequestMapping(value="/path2", port="8081") public...
}
Run Code Online (Sandbox Code Playgroud)
这样我的应用才能响应localhost:8080 / path1和localhost:8081 / path2
在应用内可以有2个独立的控制器。
通过为tomcat实现EmbeddedServletContainerCustomizer,我已经成功地取得了部分成功,但是如果可能的话,能够在控制器内实现此目标也将是一件不错的事情。
可能吗?
问题:
我试图以这样的方式将目录挂载为 Docker 卷,以便在容器内创建的用户可以写入该卷中的文件。同时,该文件至少应该对我的用户lape在容器外可读。
本质上,我需要将容器用户命名空间中的用户 UID 重新映射到主机用户命名空间上的特定 UID。
我怎样才能做到这一点?
我更喜欢以下答案:
设置:
这就是可以复制这种情况的方式。
我有我的 Linux 用户lape,分配到docker组,所以我可以运行 Docker 容器,而无需成为 root。
lape@localhost ~ $ id
uid=1000(lape) gid=1000(lape) groups=1000(lape),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),121(lpadmin),131(sambashare),999(docker)
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM alpine
RUN apk add --update su-exec && rm -rf /var/cache/apk/*
# I create a user inside the image which i want to be mapped to my `lape`
RUN adduser -D -u 800 -g 801 insider
VOLUME /data
COPY ./entrypoint.sh …Run Code Online (Sandbox Code Playgroud) 我正在尝试编译以下代码:
#include <stdlib.h>
static
unsigned iSqr( unsigned i )
{
unsigned res1 = 2;
unsigned res2 = i/res1;
while( abs( res1 - res2 ) > 1 )
{
res1 = (res1 + res2)/2;
res2 = i/res1;
}
return res1 < res2 ? res1 : res2;
}
Run Code Online (Sandbox Code Playgroud)
使用g++ test.cc -o test。
但是,g++ 编译器失败并出现以下错误:
test.cc: In function 'unsigned int iSqr(unsigned int)':
test.cc:8:29: error: call of overloaded 'abs(unsigned int)' is ambiguous
while( abs( res1 - res2 ) > 1 )
^ …Run Code Online (Sandbox Code Playgroud)