我有一组在Windows 10中使用Docker运行的容器,这是输出docker-compose ps:
> docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------
db_mysql docker-entrypoint.sh mysqld Up 3306/tcp
elk /usr/bin/supervisord -n -c ... Up 0.0.0.0:81->80/tcp
php71-fpm-nginx /config/bootstrap.sh Up 443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:9001->9001/tcp
Run Code Online (Sandbox Code Playgroud)
这是输出docker inspect:
> docker inspect php71-fpm-nginx
[
{
...
"NetworkMode": "anotherlampdocker_default",
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
],
"9001/tcp": [
{
"HostIp": "",
"HostPort": "9001"
}
]
},
...
"Mounts": [
{
"Source": "/d/Development/www",
"Destination": "/data/www",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}, …Run Code Online (Sandbox Code Playgroud) 我有一个在根帐户下运行的容器,我可以开始使用它:
docker start containername
Run Code Online (Sandbox Code Playgroud)
我希望 crontab 启动它,所以我使用 root
crontab -e
Run Code Online (Sandbox Code Playgroud)
并设置一个像这样的条目:
* * * * * /usr/bin/docker start containername
Run Code Online (Sandbox Code Playgroud)
但这行不通。我也尝试过
* * * * * root /usr/bin/docker start containername
Run Code Online (Sandbox Code Playgroud)
没有运气。
有人知道我如何才能完成这项工作吗?
我正在尝试在 docker 容器中使用 nodemon:
文件
FROM node:carbon
RUN npm install -g nodemon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "nodemon" ]
Run Code Online (Sandbox Code Playgroud)
构建/运行命令
docker build -t tag/apt .
docker run -p 49160:8080 -v /local/path/to/apt:/usr/src/app -d tag/apt
Run Code Online (Sandbox Code Playgroud)
将本地卷附加到容器以观察代码更改,会导致一些覆盖和 nodemon 抱怨找不到节点模块(其中任何一个)。我该如何解决这个问题?
我们在 Visual Studio (2017) 中有一个 .NET Core 项目,它添加了 Docker 支持。我们的项目依赖于环境变量在启动时自行配置。正如我们所理解的,为了将环境变量值传递给容器,您可以docker run使用-e.
当您通过选择 Docker 配置文件从 Visual Studio 运行项目的容器化版本时,我们注意到 Visual Studio 执行一个docker run命令。但是,我们无法弄清楚如何让 Visual Studio 在运行容器时包含我们的环境变量值。
有没有办法告诉 Visual Studio 将我们的环境变量值传递给它运行的容器?
请注意,我们不想在映像中指定环境变量值,因为这些值会根据部署到的位置而变化。
我有两个 Docker 容器:
我像这样运行我的数据库容器:
docker run --name my-db -p 127.0.0.1:3306:3306 my-db-image
我的应用程序容器是这样的:
docker run --name my-app --network host -it my-app-image
这在 Linux 上运行良好。我可以从主机系统和应用程序容器访问数据库。完美的。
但--network host不适用于 Mac 和 Windows:
主机网络驱动程序仅适用于 Linux 主机,Docker for Mac、Docker for Windows 或 Docker EE for Windows Server 不支持。
(来源: https: //docs.docker.com/network/host/)
我仍然可以从主主机访问数据库127.0.0.1:3306,但无法从应用程序容器访问它。
我该如何解决这个问题?如何让应用程序容器连接到数据库(并使用 继续从主主机访问数据库127.0.0.1:3306)?
我尝试过使用host.docker.internalandgateway.docker.internal但它不起作用。
我还尝试--network my-network在创建后my-network使用启动两个容器docker network create my-network,但它不起作用。
我不知道如何解决这个问题。
我正在尝试设置net.core.rmem_max=26214400在容器上
我有这个 docker-compose
develop:
sysctls:
- net.core.rmem_max=26214400
image: centos6
Run Code Online (Sandbox Code Playgroud)
但当我这样做时
docker-compose up -d develop
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
ERROR: for develop_1 Cannot start service develop: OCI runtime create
failed: container_linux.go:348: starting container process caused
"process_linux.go:402: container init caused \"open
/proc/sys/net/core/rmem_max: no such file or directory\"": unknown
ERROR: for develop Cannot start service develop: OCI runtime create
failed: container_linux.go:348: starting container process caused
"process_linux.go:402: container init caused \"open
/proc/sys/net/core/rmem_max: no such file or directory\"": unknown
Run Code Online (Sandbox Code Playgroud) 我是 Azure 的新手,这是我在 StackOverflow 上的第一个问题。我在使用 Docker Compose 使用多容器 Docker (Linux) 部署新的 Azure 应用服务时遇到问题。不幸的是,我无法访问我的应用程序日志,因为存在未知错误。我只更改配置以使用我的私有注册表和docker-compose配置,其他设置保持默认值。我正在使用 Azure 学生计划,因此不能选择加入 1:1 专家支持。
我的应用服务基本上由 4 个容器组成:webservice(Django REST Framework)、comprof(VueJS)、raspisample(Express)和db(PostgreSQL)。我正在使用 GitLab 的 Docker Registry (registry.gitlab.com),它是一个私有注册表(图像不公开)。这是我的docker-compose.yml文件。
version: '3'
services:
webservice:
image: registry.gitlab.com/something/webservice:latest
restart: always
working_dir: /opt/webservice
environment:
- DEBUG=false
- DATABASE_URL=postgresql://postgres:postgres@db:5432/postgres
- PREDICTOR_URL=https://something-predictor.azurewebsites.net
- CACHE_DIR=/var/cache
- SECRET_KEY="**omitted**"
- LOG_DIR=/var/log/webservice
- UPLOADS_DIR=/var/uploads
- ACCESS_LOG=/var/log/webservice/access_main.log
- ERROR_LOG=/var/log/webservice/error_main.log
ports:
- "81:80"
volumes:
- webservice_data:/var/log/webservice
- webservice_data:/var/cache
- webservice_data:/var/uploads
depends_on:
- …Run Code Online (Sandbox Code Playgroud) Docker 容器具有与之关联的 cgroup 和命名空间,无论它们是在 pod、虚拟机还是主机中运行。
同样,Kubernetes Pod 是否具有与其关联的命名空间和 cgroup,或者只是 pod 内的容器具有这些(cgroup 和命名空间)关联。如果他们这样做,我如何从主机那里找到这些信息?
cgroups kubernetes docker-container linux-namespaces kubernetes-pod
我有一个带有 Golang 的容器,它调用 https api。我正在使用暂存容器,当我尝试运行时,我得到一个certificate signed by unknown authority
url := "https://restcountries.eu/rest/v2/name/" + params.Get("country")
response, err := http.Get(url)
Run Code Online (Sandbox Code Playgroud)
我的 Dockerfile 是这样的:
FROM golang:1.15 AS builder
WORKDIR /GreetingAPI
COPY . /greeting
WORKDIR /greeting
ENV GO111MODULE=on
RUN CGO_ENABLED=0 GOOS=linux go build -o greeting
FROM scratch
COPY --from=builder /greeting .
CMD ["./greeting"]
Run Code Online (Sandbox Code Playgroud)
我使用这个answare更新了我的 Dockerfile 。但是当我尝试构建容器时,我得到 ERROR: "/ca-certificates.crt" not found: not found了failed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/ca-certificates.crt" not found: …
当尝试删除 docker 容器时(例如尝试删除时docker-compose down),我总是收到以下错误:
ERROR: for <my_container> container d8424f80ef124c2f3dd8f22a8fe8273f294e8e63954e7f318db93993458bac27: driver "overlay2" failed to remove root filesystem: unlinkat /var/lib/docker/overlay2/64311f2ee553a5d42291afa316db7aa392a29687ffa61971b4454a9be026b3c4/merged: device or resource busy
Run Code Online (Sandbox Code Playgroud)
重新启动 docker 服务、修剪或强制删除容器等常见建议不起作用。我发现唯一有效的方法是使用 手动卸载sudo umount /home/virtfs/xxxxx/var/lib/docker/overlay2/<container_id>/merged,然后我就可以删除容器。
我的操作系统CentOS Linux release 7.9.2009 (Core)有内核版本3.10.0-1127.19.1.el7.x86_64。我认为这可能是由于 overlay2 与 CentOS 冲突,但根据此页面,我的 CentOS/内核版本应该可以工作。找到解决方案会很棒,因为我理想情况下希望docker-compose down不必使用提升的权限来预先卸载。
docker-container ×10
docker ×8
centos ×1
cgroups ×1
cron ×1
docker-run ×1
dockerfile ×1
go ×1
kubernetes ×1
linux-kernel ×1
node.js ×1
nodemon ×1
sysctl ×1
ubuntu ×1
ubuntu-16.04 ×1