我正在尝试将源文件挂载到位于/ var/dynamo的docker中的目录.我希望能够在本地运行Docker并在我工作时使用我的本地文件.
使用run命令:
docker run -v $(pwd):/var/dynamo -d -t -p 8001:8001 --name dynamo davesrepo/dynamo
Run Code Online (Sandbox Code Playgroud)
用我的 Dockerfile
FROM python:3.5.1
WORKDIR /var/dynamo
RUN pip3 install tornado
EXPOSE 8001
Run Code Online (Sandbox Code Playgroud)
但是,当我bash到容器docker exec -it dynamo /bin/bash并运行ls -la目录是空的!
root@7d3d338891aa:/var/dynamo# ls -la
total 4
drwxr-xr-x 2 root root 40 Dec 29 03:37 .
drwxr-xr-x 24 root root 4096 Dec 29 03:36 ..
Run Code Online (Sandbox Code Playgroud)
运行docker inspect dynamo显示正确安装的目录
[
{
"Id": "7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a",
"Created": "2015-12-29T03:37:01.416445958Z",
"Path": "python3",
"Args": [],
"State": {
"Status": "running",
"Running": …Run Code Online (Sandbox Code Playgroud) 我们正在开发一个新的REST API,它将使用Docker部署在AWS ElasticBeanstalk上.它使用Python Celery进行预定作业,这意味着需要为工作人员运行单独的进程,我们当前的Docker配置有三个容器......
Multicontainer Docker:
09c3182122f7 sso "gunicorn --reload --" 18 hours ago Up 26 seconds sso-api
f627c5391ee8 sso "celery -A sso worker" 18 hours ago Up 27 seconds sso-worker
f627c5391ee8 sso "celery beat -A sso -" 18 hours ago Up 27 seconds sso-beat
Run Code Online (Sandbox Code Playgroud)
传统观点认为我们应该在ElasticBeanstalk上使用多容器配置,但由于所有容器都使用相同的代码,因此从OPS的角度来看,使用带有Supervisord的单个容器配置来管理进程可能更有效,更简单.
单个容器带Supervisord:
[program:api]
command=gunicorn --reload --bind 0.0.0.0:80 --pythonpath '/var/sso' sso.wsgi:application
directory=/var/sso
[program:worker]
command=celery -A sso worker -l info
directory=/var/sso
numprocs=2
[program:beat]
command=celery beat -A sso -S djcelery.schedulers.DatabaseScheduler
directory=/var/sso
Run Code Online (Sandbox Code Playgroud)
当在AWS内存上设置多容器配置分配给每个容器时,我的想法是让容器OS在内部处理内存分配而不是将其显式设置到每个容器更有效.我不太了解多容器Docker如何在ElasticBeanstalk下运行,以智能地推荐这种或那种方式.
这种情况的最佳配置是什么?