docker - Docker 在 Windows 上运行,并且仅在两个 Linux 系统之一上运行
问题描述
我有一个构建的 docker 映像,可以按预期在我的 Windows 笔记本电脑上运行。当我将其复制并加载到我的两个 Linux 系统之一时,我在运行 docker 日志时收到此错误:
错误:'docker/semantic_search_django/gunicorn.conf' 不存在
当我检查 Windows 上正在运行的容器时,我可以看到那个“丢失”的文件!此外,如果我将相同的 docker 映像复制并加载到我的第二个 Linux 系统,它会按预期运行。
这个问题今天才发生。在过去的几个月里,直到今天,我在所有 3 个系统上都取得了成功。任何建议将不胜感激。两个 Linux 系统都运行 Ubuntu 18.04.5 LTS。
我已经尝试重命名图像,我已经停止并启动了 docker 守护进程,我什至重新启动了两个 Linux 机器。
以下是我使用的命令:
docker pull my.artifactory.com/ciee_ssrdjango
docker-compose up -d
我的 docker-compose.yml
version: "3.8"
services:
web:
image: m.artifactory.com/ciee_ssrdjango
env_file:
- proxy.env
- django.env
container_name: ciee_ssrdjango
volumes:
- query-results-volume:/code
expose:
- "${SSRDJANGO_PORT}"
extra_hosts:
dbhost: ${POSTGRES_DOCKER_IP}
depends_on:
- db
networks:
- ssr_network
networks:
ssr_network:
external: true
volumes:
postgresql-volume:
external: true
query-results-volume:
external: true
我的 Dockerfile:
FROM ubuntu:18.04
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
COPY ./requirements.txt /requirements.txt
#prevents being asked to set TZ
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update -y && \
apt -y upgrade && \
apt install -y python3-pip && \
apt install -y build-essential libssl-dev libffi-dev libpq-dev python3-dev && \
apt install -y software-properties-common python3.8
RUN python3 -m pip install --upgrade pip setuptools wheel
ENV TZ=US/Eastern
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update -y & apt install gcc libxml2-dev libxslt-dev postgresql postgresql-contrib postgresql-plpython-10 --no-install-recommends unixodbc-dev unixodbc libpq-dev -y
RUN mkdir /code # && mkdir /code/ciee
RUN pip install nltk
RUN export PATH=~/.local/bin:$PATH
RUN pip install -r /requirements.txt
COPY . /code/
WORKDIR /code
RUN useradd -m user && chmod 777 /home/user && mkdir /code/query_results && chmod 777 /code/query_results
USER user
CMD ["gunicorn", "semantic_search_django.wsgi:application", "--config", "docker/semantic_search_django/gunicorn.conf", "--keep-alive", "600"]
事情是这样的,我已经成功使用这些文件和命令好几个星期了。
解决方案
我可以做一个假设。您正在将 query-results-volume 挂载到容器中的 /code 目录中,并且您的 conf 文件位于其中。卷在容器之间持续存在——这就是卷的本质。因此,不知何故,有问题的文件(甚至文件夹)已从问题机器上的卷中删除,现在容器无法获取它。
推荐阅读
- javascript - 如何用vue轻松处理表单?
- swift - 为什么在 Swift 中包装可选值?是否可以在不声明类型的情况下将变量设置为可选?
- python - 使用机器学习预测温度
- java - 解释跟随 StepRequest 的行为
- scala - 如何制作由前缀驱动的 Codec[Option[T]]?
- javascript - 使用 getElementById 更改 html 内容
- html - bulma 中相同大小的标签
- c# - 加载带有 .Net Core 错误的本机库
- java - ObjectInputStream 未读入
- selenium-webdriver - webdriver Firefox 和 selenium 错误(必须使用 Gecko 驱动)