根据文档, Docker 卷的广告方式如下:
卷是持久保存 Docker 容器生成和使用的数据的首选机制。虽然绑定挂载取决于主机的目录结构和操作系统,但卷完全由 Docker 管理。
但如果它们这么好,为什么没有像复制、重命名这样的操作来管理它们呢?
命令:
docker volume --help
Run Code Online (Sandbox Code Playgroud)
只给出这些选项:
Usage: docker volume COMMAND
Manage volumes
Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes
Run Code Online (Sandbox Code Playgroud)
文档还没有说明任何其他命令,也没有任何具有复制或重命名功能的解决方法。
我想重命名当前现有的卷并创建另一个(空白)来代替最初命名的卷,并用新数据填充它以进行测试。
完成测试后,我可能希望(或不希望)删除新创建的卷,并将另一个卷重命名为之前的(原始)名称,以将卷设置恢复为之前的状态。
我不想创建要重命名的原始卷的备份。重命名对我来说已经足够好了,而且比创建备份和恢复要快得多。
编辑 docker-compose 文件并更改卷的名称也是我想避免的。
是否有任何解决方法可以用于重命名卷?
Docker Root Dir: /var/lib/docker针对和子目录的 shell 的低级手动管理是否可以volumes作为解决方案,或者该方法可能会导致某些 dockeremon 数据不一致?
如果您使用命令:
docker network ls
Run Code Online (Sandbox Code Playgroud)
您将得到列出所有 Docker 网络的输出,但缺少这些网络的 IP 范围。
如何获取所有创建的子网IP范围?
例如,如果我使用命令:
docker network create --subnet 172.31.0.1/16 --internal network-one
docker network create --subnet 173.31.0.1/16 --internal network-two
Run Code Online (Sandbox Code Playgroud)
我想获取包含的地址范围列表
172.31.0.1/16
173.31.0.1/16
Run Code Online (Sandbox Code Playgroud)
如果我能够以 CLI 输出格式获取列表,那就完美了:
network-one 172.31.0.1/16
network-two 173.31.0.1/16
...
Run Code Online (Sandbox Code Playgroud)
所以我可以将它作为 Bash 数组加载,并稍后逐行解析它或通过管道传输到另一个 CLI 命令。
我想使用 GET 方法执行带有参数和值的 CURL 请求,但我不想在传递给 curl 之前混合它们,就像在字符串中一样:
www.example.com/index.php?parameter=value
Run Code Online (Sandbox Code Playgroud)
我想将单独的 url 字符串和查询字符串或最多 url 字符串 + 参数和值数组传递给 CURL,并让 CURL 知道我想使用 GET 方法 (CURLOPT_HTTPGET=TRUE)。
GET 方法是否有等效的 CURLOPT_POSTFIELDS ?
我有这个Dockerfile:
FROM chekote/gulp:latest
USER root
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y sudo libltdl-dev
ARG dockerUser='my-user-name';
ARG group='docker';
# crate group if not exists
RUN if ! grep -q -E "^$group:" /etc/group; then groupadd $group; fi
# create user if not exists
RUN if ! grep -q -E "^$dockerUser:" /etc/passwd; then useradd -c 'Docker image creator' -m -s '/bin/bash' -g $group $dockerUser; fi
# add user to the group (if it was …Run Code Online (Sandbox Code Playgroud) 我有一个正在运行和分离的容器。我想在附加到该容器之前在那里创建一个命令别名。
当我连接到容器并输入:
alias bar='foo'
Run Code Online (Sandbox Code Playgroud)
创建了一个别名,并且可以通过以下方式进行检查:
alias
Run Code Online (Sandbox Code Playgroud)
命令。
但是如果我想通过docker exec命令来做同样的事情,即这样
docker exec -it <container-name> /bin/bash -c "alias bar='foo'"
Run Code Online (Sandbox Code Playgroud)
它不起作用,可能是因为当我连接到容器并输入其终端时
/bin/bash -c "alias bar='foo'"
Run Code Online (Sandbox Code Playgroud)
它也不起作用。
您知道如何修改alias bar='foo'以便与docker exec应用于分离容器的命令一起使用吗?
PHP Composer 允许您定义项目的composer.json指向私有存储库的 URL 列表。例子:
{
"require": {
"vendor/my-private-repo": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:vendor/my-private-repo.git"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是每当我创建一个新的私有存储库时,我都需要编辑我的所有项目并将该新存储库 URL 添加到他们的composer.json 中,然后才能请求该新包。
是否有任何全局作曲家配置,我可以将 URL 存储到我的所有私有存储库,或者甚至更好,我可以全局设置一个指向资源的 URL,该资源将包含我的所有私有存储库及其最新 URL 的列表?
我知道您可以将一个命令的输出通过管道传输到另一个命令 - 例如
ls -la | less
Run Code Online (Sandbox Code Playgroud)
查看ls -la内部less而不是终端stdio的输出。
但是,如果您使用command带有将输出保存到文件的参数
command --save-to-file file.txt
Run Code Online (Sandbox Code Playgroud)
那么如何通过管道将其传递给另一个命令?
这种方式行不通:
command --save-to-file | less
Run Code Online (Sandbox Code Playgroud)
因为命令会抱怨你使用--save-to-file没有任何参数(文件名)
如果我记得很清楚,在 ram 中有一个缓冲区或临时文件之类的东西,您可以将其放入而不是file.txt这样您可以执行以下操作:
command --save-to-file ram-buffer.txt && cat ram-buffer.txt
Run Code Online (Sandbox Code Playgroud)
甚至无需在磁盘上创建文件,对吗?
为什么我需要那个?
一些命令只有一个基本的输出到 stdio 并且更有用的输出类型不能被它们打印而只能保存到文件中。问题是我根本不想将更有用的输出类型保存到任何文件,而只是在终端或管道中将其打印到另一个执行过滤等的命令链,然后最终打印处理后的输出。
我不想负责创建一个 tmp 文件然后删除它等等。完美地我只想使用一种魔法文件(或重定向)来代替file.txt我可以通过管道传输到另一个命令的文件。
如果可能的话,不要将输出的任何内容写入磁盘,这对我来说很重要。只需在终端或管道中将其打印到其他命令即可。
此时我正在尝试捕获 PHPUnit 的输出
phpunit --log-junit log.xml
Run Code Online (Sandbox Code Playgroud)
这不是一个 shell 命令,而是一个 PHP 脚本,它使用:
#!/usr/bin/env php
Run Code Online (Sandbox Code Playgroud)
但是我记得我曾经有一个带有 linux 命令的示例,我想获取输出但它的形式只能通过参数获得 --save-to-file outputfile.txt
也许是因为管道/重定向设计为保存到文件的输出不是二进制安全的,因此在管道/重定向时这样的输出可能会损坏 - 可以吗?
在 Guzzle 文档中,您可以找到一个可调用的请求选项on_stats,它允许您访问请求的传输统计信息,并访问与客户端关联的处理程序的较低级别传输详细信息。
该TransferStats 对象为您提供了一些检查请求的方法,其中之一是getHandlerStats(). 根据文档块,此方法为您提供了所有处理程序特定传输数据的数组。
但是我找不到该数组的特定键的任何文档。有些很简单,例如primary_ip或 ,url但对于其他人,我有以下问题。
$handlerStats = [
"url" => "https://example.com",
"content_type" => "application/json; charset=utf-8",
"http_code" => 200,
"header_size" => 569,
"request_size" => 731, // is request size purely the body? and is this in bytes or kb or..?
"filetime" => -1,
"ssl_verify_result" => 0, // what are the options here?
"redirect_count" => 0,
"total_time" => 0.33132, // is this in seconds, i guess so? this …Run Code Online (Sandbox Code Playgroud) 是否有任何 git 命令可以为本地存储库中的分支(完美适用于所有分支)设置远程存储库,而无需将本地提交推送到远程?
简而言之,我想要得到的所有东西都可以通过使用 flag 来完成--all:
git push --all
也可以选择设置上游-u:
git push --all -u
但我不想推动任何提交。
期望的结果只是设置本地和远程存储库之间的链接,git push因此如果您git push将来不需要指定远程,也可以跳过--all选项。
目的是创建一个Reader类,该类作为League Flysystem 文档的包装
该读者应提供的阅读目录中的所有文件,方便的方式,不管文件的物理形态(本地文件,或者归档的文件)
由于DI方法,包装器不应在其内部创建依赖项实例,而应将这些依赖项作为构造函数或其他setter方法的参数。
这是一个示例,如何单独使用 League Flysystem(没有提到的包装器)从磁盘读取常规文件:
<?php
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local;
$adapter = new Local(__DIR__.'/path/to/root');
$filesystem = new Filesystem($adapter);
$content = $filesystem->read('path-to-file.txt');
Run Code Online (Sandbox Code Playgroud)
如您所见,首先创建一个在其构造函数中需要路径的适配器Local,然后创建在其构造函数中需要适配器实例的文件系统。
两个参数:Filesystem和Local不是可选的。从这些类创建对象时必须传递它们。这两个类都没有针对这些参数的公共设置方法。
我的问题是如何通过使用依赖注入来编写包装Filesytem和Local的Reader类?
我通常会做类似的事情:
<?php
use League\Flysystem\FilesystemInterface;
use League\Flysystem\AdapterInterface;
class Reader
{
private $filesystem;
private $adapter
public function __construct(FilesystemInterface $filesystem,
AdapterInterface $adapter)
{
$this->filesystem = $filesystem;
$this->adapter = $adapter;
}
public function readContents(string $pathToDirWithFiles)
{
/**
* uses $this->filesystem …Run Code Online (Sandbox Code Playgroud)