移动docker在主机之间合成图像
基于 我已加载图像:移动docker在主机之间合成图像,docker,docker-compose,Docker,Docker Compose,基于 我已加载图像: $ docker images -a REPOSITORY TAG IMAGE ID CREATED SIZE br/irc latest 3203cf074c6b 23 hours ago 377MB openjdk 8u131-jdk-alpine a2a00e606
$ 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开始,所以不确定典型的工作流(构建、运行、附加等)
因此,即使我有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文件,您必须执行:
docker-compose up -d
然后,要查看容器是否正在运行,您必须运行:
docker ps
此命令将显示所有正在运行的容器
然后,您可以运行exec命令,该命令将允许您在正在运行的容器中输入:
docker-compose exec irc
更多关于docker compose的信息:你的问题是关于
docker compose
,但是你也问了一些关于运行
,构建
,附加
的问题,这让我觉得我应该试着帮你了解一些基本信息(几个月前我还不太容易处理:-)
图像
图像是创建容器的基础。Docker从中提取图像并将其存储在主机中,以便在每次创建新容器时使用。容器中的更改不会影响基础图像
要从docker hub提取图像,请使用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注册表中,这样你就可以轻松地从任何其他机器获得<代码>拉< /代码>。在处理Raspberry Pi时,我必须这样做(编译耗时数小时,我需要
pull
已经创建的图像,而不是在每个Raspberry中从头开始构建它)
容器
容器基于图像,您可以在同一主机上拥有来自同一图像的多个不同容器<代码>docker run[图像]
基于该图像创建一个新容器并启动它。这里的许多人开始认为容器就像迷你虚拟机。他们不是
将容器视为进程。每个容器都有一个CMD
,启动时执行它。如果此命令完成或失败,容器将停止、退出。一个很好的例子是nginx
:去检查官方,命令是:
CMD ["nginx"]
如果您想查看CMD
中的日志,您可以docker attach…
到您的容器。您还可以docker stop…
运行中的容器或docker start…
已停止的容器。您可以通过以下方式“进入”键入命令:
docker exec -it [container_name] /bin/bash
这将打开一个新的tty供您键入命令,同时CMD
继续运行
要阅读以上主题的更多信息(我只触及了表面),我建议您也阅读:
docker compose
在您熟悉这些之后,docker compose
将成为您的便捷工具,它将帮助您使用单行命令操纵许多容器。例如:
docker compose up
构建,(重新)创建,启动,并将附加到服务的容器
除非它们已经在运行,否则此命令还会启动任何链接的服务
docker compose up
命令聚合每个容器的输出(基本上运行docker compose log-f
)。当命令退出时,所有容器都将停止。运行docker compose up-d
将在后台启动容器并使其保持运行
如何确保正在使用本地图像?由于docker compose up确实在运行,但在这个主机上,它会给我带来编译问题,因此我在另一个主机上构建docker映像,并将它们复制到这个主机上。@Togos现在我已经有了所有三个容器,如何确保grails web应用程序正在运行以及在哪个端口上?docker container ls-a
列出了所有容器(即使是那些停下来的人)。您可以使用docker inspect…
查看容器详细信息。我在回答中添加了一些关于docker compose
的额外信息。说实话,我不太确定您的问题是什么,但如果您需要,我会在这里提供帮助。实际上,您询问的是docker compose
,这是一种在后台执行许多操作的工具(例如,docker compose-up
构建图像
,(re)创建/启动/附加到容器
,然后更新您的问题,说明您正在寻找简单的docker命令,如docker run
和docker ps
@tgogos。我非常感谢您的解释,它们很有帮助。我只是回到docker命令,因为我在docker compos中找不到类似的命令e、 谢谢你的帮助。