[英]Docker-compose up does not start a container
Dockerfile:
FROM shawnzhu/ruby-nodejs:0.12.7
RUN \
apt-get install git \
&& npm install -g bower gulp grunt \
gem install sass
RUN useradd -ms /bin/bash devel
# Deal with ssh
COPY ssh_keys/id_rsa /devel/.ssh/id_rsa
COPY ssh_keys/id_rsa.pub /devel/.ssh/id_rsa.pub
RUN echo "IdentityFile /devel/.ssh/id_rsa" > /devel/.ssh/config
# set root password
RUN echo 'root:password' | chpasswd
# Add gitconfig
COPY .gitconfig /devel/.gitconfig
USER devel
WORKDIR /var/www/
EXPOSE 80
docker-compose.yml文件:
nodejs:
build: .
ports:
- "8001:80"
- "3000:3000"
volumes:
- ~/Web/docker/nodejs/www:/var/www
命令:
$ docker-compose build nodejs
$ docker圖片
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
nodejs_nodejs latest aece5fb27134 2 minutes ago 596.5 MB
shawnzhu/ruby-nodejs 0.12.7 bbd5b568b88f 5 months ago 547.5 MB
$ docker-compose up -d nodejs
Creating nodejs_nodejs_1
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c24c6d0e756b nodejs_nodejs "/bin/bash" About a minute ago Exited (0) About a minute ago nodejs_nodejs_1
你可以看到docker-compose up -d
應該創建一個容器並在后台運行它,但事實並非如此。 而是退出代碼0。
如果您的Dockerfile沒有執行任何操作(例如,要在端口80上偵聽的Web服務器),它將在完成指令運行后立即被丟棄。 因為Docker容器應該是“短暫的” 。
如果您只想啟動容器並通過終端與其進行交互,請不要使用docker-compose up -d
,請改用以下內容:
docker run -it --entrypoint=/bin/bash [your_image_id]
這將啟動您的容器並運行/bin/bash
, -it
可幫助您保持終端會話與容器交互。 完成工作后,按Ctrl-D
退出。
SQL Server 2017容器在創建后很快就出現了類似的問題。 在容器內運行的進程應該長時間運行,否則Docker將退出容器。 在docker-compose場景中,我實現了tty:true方法,這里記錄了https://www.handsonarchitect.com/2018/01/docker-compose-tip-how-to-avoid-sql.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.