ubuntu:18.04
nodejsアプリを実行するために実行中のコンテナー内にdockerをインストールしました。他の小さなアプリをドッキングする必要があるため、このコンテナー内にdockerをインストールする必要があります。
彼女は私のDockerfileです
FROM ubuntu:18.04
WORKDIR /app
COPY package*.json ./
# Install Nodejs
RUN apt-get update
RUN apt-get -y install curl wget dirmngr apt-transport-https lsb-release ca-certificates software-properties-common gnupg-agent
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get -y install nodejs
# Install Chromium
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
RUN apt-get update
RUN apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst \
--no-install-recommends
RUN rm -rf /var/lib/apt/lists/*
# Install Docker
RUN curl -fsSL https:/download.docker.com/linux/ubuntu/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
RUN apt-get update -y
RUN apt-get install -y docker-ce docker-ce-cli containerd.io
RUN npm install
COPY . .
CMD [ "npm", "start" ]
EXPOSE 3000
コンテナが稼働しているとき、私はdocker exec -it app bash
。私が行う場合はservice docker start
、その後ps ax
、これを得ました
PID TTY STAT TIME COMMAND
115 ? Z 0:00 [dockerd] <defunct>
コンテナ内でdockerを使用できるようにするにはどうすればよいですか、またはapkではなくapt-getを使用するdockerイメージはありますか?それを使用する必要があるとき、私はこのエラーが発生したためです:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
最初に、イメージを最初から作成するのではなく、node-imageとinstall docker、およびdocker-imageとインストール済みノードのいずれかにベースイメージの1つを使用することをお勧めします。必要なものすべて
FROM node:buster
RUN apt-get update
RUN apt install docker.io -y
RUN docker --version
ENTRYPOINT nohup dockerd >/dev/null 2>&1 & sleep 10 && node /app/app.js
2つ目は、エラーCannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
です。理由は、Dockefileでdockerプロセスを開始しておらず、コンテナで複数のプロセスを実行することはお勧めしません。Dockerプロセスが停止した場合、ステータスがわからないため、1つのプロセスを配置する必要があります。バックグラウンドで。
CMD nohup dockerd >/dev/null 2>&1 & sleep 10 && node /app/app.js
実行します
docker run --privileged -it -p 8000:8000 -v /var/run/docker.sock:/var/run/docker.sock your_image
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加