Docker新手在这里。我使用this tutorial作为示例。
我在运行El Cap的Mac上。运行最新的Docker for mac。
我创建了一个泊坞窗图片
$ docker build -t pitosalas/sinatra-example .
Sending build context to Docker daemon 9.728 kB
Step 1 : FROM phusion/passenger-ruby23:0.9.19
---> 6841e494987f
Step 2 : ENV HOME /root
---> Using cache
---> 94013634dd29
Step 3 : CMD /sbin/my_init
---> Using cache
---> 545db4245647
Step 4 : RUN rm -f /etc/service/nginx/down
---> Using cache
---> 1a5361bf707b
Step 5 : RUN rm /etc/nginx/sites-enabled/default
---> Using cache
---> 6d884a990bd7
Step 6 : ADD docker/vhost.conf /etc/nginx/sites-enabled/app.conf
---> Using cache
---> 471fcf124466
Step 7 : RUN mkdir /home/app/webapp
---> Using cache
---> a0336183d1f0
Step 8 : WORKDIR /tmp
---> Using cache
---> 38b834783e4f
Step 9 : COPY app/Gemfile /tmp/
---> Using cache
---> 6541c0cbf6eb
Step 10 : COPY app/Gemfile.lock /tmp/
---> Using cache
---> 1be89d7bd57b
Step 11 : RUN bundle install
---> Using cache
---> 3b21f88e6bcf
Step 12 : COPY app /home/app/webapp
---> Using cache
---> 8bc0cb084d99
Step 13 : RUN chown -R app:app /home/app
---> Using cache
---> 4bba23481f1f
Step 14 : RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
---> Using cache
---> d85a89da09c2
Successfully built d85a89da09c2
然后我检查了运行容器。没有。正如所料:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
$
接下来我运行容器:
docker run -p 4567:80 pitosalas/sinatra-example
*** Running /etc/my_init.d/00_regen_ssh_host_keys.sh...
*** Running /etc/my_init.d/30_presetup_nginx.sh...
*** Running /etc/rc.local...
*** Booting runit daemon...
*** Runit started as PID 8
Aug 22 02:07:22 dd3474178cd5 syslog-ng[18]: syslog-ng starting up; version='3.5.6'
ok: run: /etc/service/nginx-log-forwarder: (pid 27) 0s
[ 2016-08-22 02:07:23.8489 28/7fc94dfd9780 age/Wat/WatchdogMain.cpp:1291 ]: Starting Passenger watchdog...
[ 2016-08-22 02:07:23.8769 31/7f07e849d780 age/Cor/CoreMain.cpp:982 ]: Starting Passenger core...
[ 2016-08-22 02:07:23.8770 31/7f07e849d780 age/Cor/CoreMain.cpp:235 ]: Passenger core running in multi-application mode.
[ 2016-08-22 02:07:23.8842 31/7f07e849d780 age/Cor/CoreMain.cpp:732 ]: Passenger core online, PID 31
[ 2016-08-22 02:07:23.9104 42/7f66f0bb5780 age/Ust/UstRouterMain.cpp:529 ]: Starting Passenger UstRouter...
[ 2016-08-22 02:07:23.9155 42/7f66f0bb5780 age/Ust/UstRouterMain.cpp:342 ]: Passenger UstRouter online, PID 42
看起来不错,但是:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
$
仍然没有容器。以下是一些文件:
[Dockerfile]
FROM phusion/passenger-ruby23:0.9.19
# Set correct environment variables.
ENV HOME /root
# Use baseimage-docker's init process.
CMD ["/sbin/my_init"]
# Enable nginx and Passenger
RUN rm -f /etc/service/nginx/down
# Remove the default site
RUN rm /etc/nginx/sites-enabled/default
# Create virtual host
ADD docker/vhost.conf /etc/nginx/sites-enabled/app.conf
# Prepare folders
RUN mkdir /home/app/webapp
# Run Bundle in a cache efficient way
WORKDIR /tmp
COPY app/Gemfile /tmp/
COPY app/Gemfile.lock /tmp/
RUN bundle install
# Add our app
COPY app /home/app/webapp
RUN chown -R app:app /home/app
# Clean up when done.
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
另外
[vhost.conf]
server {
listen 80;
server_name localhost;
root /home/app/webapp/public;
passenger_enabled on;
passenger_user app;
passenger_ruby /usr/bin/ruby2.3;
}
这是我正在使用的目录树:
$ tree
.
├── Dockerfile
├── app
│ ├── Gemfile
│ ├── Gemfile.lock
│ ├── app.rb
│ └── config.ru
├── docker
│ └── vhost.conf
└── tmp
3 directories, 6 files
$
为什么我没有展示正在运行的容器?
答案 0 :(得分:9)
Docker计算机用于配置远程docker主机,包括在1.12版本之前由Windows和MacOS在VM中使用的主机。由于您在docker CLI上并与引擎通信,因此您不需要泊坞机。
要查看正在运行的容器,请使用docker ps
,包含-a
参数,以显示尚未删除的已退出容器。要查看您构建的图像,请docker images
。有关运行docker的更多信息,请查看docker user guide。