我希望能够检查 Docker 容器的内容(只读)。一个优雅的方法是将容器的内容挂载到一个目录中。我说的是在主机上安装容器的内容,而不是在容器内的主机上安装文件夹。
我可以看到现在 Docker 中有两个存储驱动程序:aufs 和 btrfs。我自己的 Docker 安装使用 btrfs,浏览到 /var/lib/docker/btrfs/subvolumes 会显示系统上每个 Docker 容器的一个目录。然而,这是 Docker 的一个实现细节,在其他地方挂载 --bind 这些目录感觉是错误的。
是否有正确的方法来执行此操作,或者我是否需要修补 Docker 以支持这些类型的安装?
在 GCE 上的 docker 实现中,我们的根文件系统空间不足。
由于图像本身存储在单独的 1TB 卷上,因此图像本身应该不是问题。
一个候选者是 Docker 本身存储的集中式日志文件(某处的 json 文件?),有谁知道这些文件/文件位于/所在的位置,以及我们如何对它们进行日志旋转/截断?
我们有一个从外部数据源加载一些配置文件的任务。上传设置后,我们希望能够重新启动服务中的所有任务,以便设置传播到所有实例。
重新启动所有服务的最佳方法是什么?
我们有一个“解决方法”,包括将“任务数”设置为 0 然后备份,但这绝对不是它应该完成的方式并且有停机时间。
我想在 mysql 之上创建一个 docker 图像,该图像已经包含我的应用程序所需的方案。
我尝试向 Dockerfile 添加行,将我的方案作为 sql 文件导入。我是这样做的(我的 Dockerfile):
FROM mysql
ENV MYSQL_ROOT_PASSWORD="bagabu"
ENV MYSQL_DATABASE="imhere"
ADD imhere.sql /tmp/imhere.sql
RUN "mysql -u root --password="bagabu" imhere < /tmp/imhere.sql"
Run Code Online (Sandbox Code Playgroud)
据我了解,这是行不通的,因为 mysql docker 映像不包含 mysql 客户端(最佳实践状态“不要添加东西只是因为它们会很好”)(我错了吗?)
这样做的好方法是什么?我想到了一些事情,但它们似乎都是凌乱的解决方法。
有什么建议?希望以一种易于以后维护并且也可能符合最佳实践的方式?
我一直得到这个(Ubuntu 16.04 LTS):
$ docker pull nginx
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout
Run Code Online (Sandbox Code Playgroud)
但是 curl TLS 工作正常(除了身份验证错误):
$ curl https://registry-1.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
Run Code Online (Sandbox Code Playgroud)
甚至一个小的 golang 程序(模仿 docker)也能正常工作:
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
resp, err := http.Get("https://registry-1.docker.io/v2/")
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println("Got: ", string(body))
}
Run Code Online (Sandbox Code Playgroud)
docker TLS 超时请求的 pcap:
reading from file …Run Code Online (Sandbox Code Playgroud) 我有一个 CoreOS (835.9.0) 的 vanilla 安装,它不会在启动时启动 docker 守护进程。它仅在我通过 SSH 登录并执行例如docker ps.
如何让 docker 守护进程在系统启动时自动启动?
当我说 docker 守护进程时,我的意思ps -ef | grep docker是在我执行之后才显示任何进程docker ps
我试图从一台机器上获取一个 docker 容器并在另一台机器上运行它并遇到此错误:“来自守护进程的错误响应:未指定命令”。
下面是一个显示问题的简化示例:
docker --version
Docker version 1.10.1, build 9e83765
docker pull ubuntu
docker run --name u1 -dit ubuntu:latest
docker export -o exported u1
docker stop u1
docker rm u1
docker import exported ubuntu:imported
docker run --name u1 -dit ubuntu:imported
docker: Error response from daemon: No command specified.
Run Code Online (Sandbox Code Playgroud)
在那个例子中,我们首先拉取一个镜像 (ubuntu) 并u1从它成功创建/运行容器。然后我们将该容器导出到文件 ( exported),停止/删除容器,将文件导入新映像 ( ubuntu:imported) 并尝试从中运行新容器。它失败。
我正在关注CoreOS Docker 文档,它提到使用以下命令启动容器:
docker run someImageName /bin/somebinary
Run Code Online (Sandbox Code Playgroud)
哪里someImageName有图。当 /bin/somebinary 退出时,图像将不再运行。
我只想运行一个图像,而不指定任何要运行的二进制文件。相反,我只想运行通常在图像操作系统内部运行的服务(例如,systemd/sysvinit)。
这似乎是任何人都想用 Docker 做的最常见的事情,但是尝试在没有命令的情况下运行镜像会返回:
2014/02/05 14:49:19 Error: create: No command specified
Run Code Online (Sandbox Code Playgroud)
如何启动 Docker 容器并运行完整的操作系统,而不是指定命令?
我刚刚docker-ce在 CentOS 上安装了最新版本,但我无法从相邻服务器访问已发布的端口,也无法从容器本身访问外部。
在启用 NetworkManager 和 FirewallD 的情况下运行普通的 CentOS 8。默认防火墙区域是public.
版本:
docker-ce 19.03.3(官方 Docker RPM)containerd.io 1.2.6(用于 CentOS 7 的官方 Docker RPM - 尚不适用于 CentOS 8)我在 docker 容器中有 php-fpm,在Dockerfile我编辑 fpm 配置文件 ( /etc/php5/fpm/pool.d/www.conf) 以设置要访问的访问日志和要访问的/var/log/fpm-access.log错误日志/var/log/fpm-php.www.log:
# Do some php-fpm config
# Redirect worker stdout and stderr into main error log
# Activate the fpm access log
# Enable display errors
# Enable the error log
RUN sed -i '/^;catch_workers_output/ccatch_workers_output = yes' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;access.log/caccess.log = /var/log/fpm-access.log' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_flag\[display_errors\]/cphp_flag[display_errors] = off' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_admin_value\[error_log\]/cphp_admin_value[error_log] = /var/log/fpm-php.www.log' /etc/php5/fpm/pool.d/www.conf && \
sed …Run Code Online (Sandbox Code Playgroud)