我已加载图像:
$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
br/irc latest 3203cf074c6b 23 hours ago 377MB
openjdk 8u131-jdk-alpine a2a00e606b82 5 days ago 101MB
nginx 1.13.3-alpine ba60b24dbad5 4 months ago 15.5MB
但现在我想运行它们,就像它们使用docker-compose运行一样,但我找不到任何示例。
下面是docker-compose.yml
version: '3'
services:
irc:
build: irc
hostname: irc
image: br/irc:latest
command: |
-Djava.net.preferIPv4Stack=true
-Djava.net.preferIPv4Addresses
run-app
volumes:
- ./br/assets/br.properties:/opt/br/src/java/br.properties
nginx:
hostname: nginx
image: nginx:1.13.3-alpine
ports:
- "80:80"
links:
- irc:irc
volumes:
- ./nginx/assets/default.conf:/etc/nginx/conf.d/default.conf
所以,即使我有docker-compose yml文件,但由于我有来自另一个主机的构建映像,我可以运行docker命令来运行和执行映像吗?确保引用的是本地映像,而不是来自docker注册表的映像。
谢谢@tgogos,这确实给了我一个大致的概述,但具体来说,我要找的是:
$ docker run -dit openjdk:8u131-jdk-alpine
then:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc6ceb8a82f8 openjdk:8u131-jdk-alpine "/bin/sh" 52 seconds ago Up 51 seconds vibrant_hodgkin
shows its running
2nd:
$ docker run -dit nginx:1.13.3-alpine
3437cf295f1c7f1c27bc27e46fd46f5649eda460fc839d2d6a2a1367f190cedc
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3437cf295f1c nginx:1.13.3-alpine "nginx -g 'daemon ..." 20 seconds ago Up 19 seconds 80/tcp vigilant_kare
cc6ceb8a82f8 openjdk:8u131-jdk-alpine "/bin/sh" 2 minutes ago Up 2 minutes vibrant_hodgkin
then: finally:
[ec2-user@ip-10-193-206-13 DOCKERLOCAL]$ docker run -dit br/irc
9f72d331beb8dc8ccccee3ff56156202eb548d0fb70c5b5b28629ccee6332bb0
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f72d331beb8 br/irc "/opt/irc/grailsw" 8 seconds ago Up 7 seconds 8080/tcp cocky_fermi
3437cf295f1c nginx:1.13.3-alpine "nginx -g 'daemon ..." 56 seconds ago Up 55 seconds 80/tcp vigilant_kare
cc6ceb8a82f8 openjdk:8u131-jdk-alpine "/bin/sh" 2 minutes ago Up 2 minutes vibrant_hodgkin
All three UP !!!!
您的问题是关于Docker-Compose
的,但您也询问了关于Run
、Build
和Attach
的问题,这使我认为我应该尝试帮助您一些基本信息(几个月前我还不太容易处理这些信息:-)
图像是创建容器
的基础。Docker从http://hub.Docker.com中提取图像,并将其存储在主机中,以便每次创建新容器时使用。容器中的更改不会影响基映像。
若要从docker集线器中提取图像,请使用docker pull...
。要构建自己的映像,请开始阅读DockerFiles
。一个简单的Dockerfile(以抽象的方式)将如下所示:
FROM ubuntu # base image
ADD my_super_web_app_files # adds files for your app
CMD run_my_app.sh # starts serving requests
要为主机创建上面的映像,您可以使用Docker build...
,这是构建映像的一种非常好的方法,因为您知道要创建的步骤。
如果此过程需要很长时间,您可以稍后考虑将映像存储在Docker Registry
中,如http://hub.docker.com,以便您可以轻松地从任何其他计算机中提取
映像。在Raspberry Pi上处理FFMPEG
时,我不得不这样做(编译花费了几个小时,我需要pull
已经创建的映像,而不是在每个Raspberry中从头开始build
)。
容器是基于映像的,您可以在同一主机上拥有来自同一映像的许多不同容器。Docker run[image]
基于映像创建一个新容器并启动它。这里的许多人开始认为容器就像微型虚拟机。他们不是!
将容器视为一个进程。每个容器都有一个cmd
并在启动时执行它。如果此命令完成或失败,容器将停止或退出。这方面的一个很好的例子是nginx
:去检查正式的Dockerfile,命令是:
CMD ["nginx"]
如果要查看cmd
中的日志,可以将Docker附加...
到容器中。您还可以Docker stop...
运行中的容器或Docker start...
已经停止的容器。您可以通过以下方法“进入内部”键入命令:
docker exec -it [container_name] /bin/bash
这将打开一个新的tty,供您键入命令,同时cmd
继续运行。
>
是否可以在运行的容器中启动shell会话(不使用ssh)
Docker-输入带有新TTY的运行容器
如何连接和分离Docker的进程?
docker compose up
问题内容: 我想将我的应用程序堆栈(由3个docker映像组成)并由docker- compose管理,将其全部从开发机器移至生产机器。我知道几种直接使用docker的方法: 将图像推送到注册表,然后将其从生产环境中撤回 docker从开发中保存,然后在生产中加载docker 在生产中重建映像(宁愿保持对生产的依赖性,所以不是一个好的选择。) 我目前倾向于先保存docker然后再加载docker,
我想把我的应用程序堆栈,由3个docker映像组成,由docker-compose管理,并把它从开发机器整体转移到生产机器上。我知道用直上Docker做这件事的几种方法: null 提前致谢
问题内容: 我找不到将Docker运行容器从一台主机移动到另一台主机的方法。 有什么办法可以像将图像一样将容器推入存储库吗?当前,我不使用数据卷来存储与在容器内运行的应用程序关联的数据。因此,一些数据驻留在容器内,我想在重新设计设置之前将其保留。 问题答案: 您无法将正在运行的Docker容器从一台主机移动到另一台主机。 您可以使用将容器中的更改提交到映像,将映像移到新主机上,然后使用启动新容器。
Docker允许来自多个容器的服务器通过链接和服务发现相互连接。然而,据我所知,这个服务发现是主机本地的。我想实现一个使用其他托管在不同机器上的服务的服务。 在Docker中有几种方法可以解决这个问题,比如CoreOS的< code>jumpers,本质上代理其他机器的主机本地服务,以及一大堆用于管理Docker部署的github项目,这些项目似乎都试图支持这个用例。 鉴于发展速度,很难遵循当前的
我一直在计算机上从事laravel5项目,但现在我想继续另一个项目,但不知道如何:( 我使用的是wampserver,项目位于“www”文件夹中,这是我在尝试打开项目时遇到的错误:“内部服务器错误” 服务器遇到内部错误或配置错误,无法完成您的请求“
对主题之间的消息的特别移动有什么建议(除了一个接一个的复制和粘贴?) 具体地说,该用例用于将截止日期主题中的消息移回原始主题进行再处理。