gpt4 book ai didi

docker - 在主机之间移动 docker-compose 图像

转载 作者:行者123 更新时间:2023-12-02 18:30:33 27 4
gpt4 key购买 nike

基于 Moving docker-compose containersets

我已经加载了图片:

$ 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 registry 的图像。

感谢@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这让我觉得我应该尝试帮助您了解一些基本信息(几个月前我还不太容易应付 :-)

images

图像在某种程度上是 containers 的基础被创建。 Docker 从 http://hub.docker.com 拉取镜像并将它们存储在您的主机中,以便在您每次创建新容器时使用。容器中的更改不会影响基础镜像。

要从 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 registry 中喜欢http://hub.docker.com ,这样你就可以pull它很容易从任何其他机器。在处理 ffmpeg 时,我必须这样做在 Raspberry Pi 上(编译需要几个小时,我需要 pull 已经创建的图像,而不是 build 在每个 Raspberry 中再次从头开始)。

containers

容器基于镜像,您可以在同一主机上拥有来自同一镜像的许多不同容器。 docker run [image]基于该图像创建一个新容器并启动它。这里的许多人开始认为容器就像迷你虚拟机。他们不是!

将容器视为一个进程。每个容器都有一个 CMD并在启动时执行它。如果此命令完成或失败,容器将停止、退出。一个很好的例子是 nginx : 去官方看看Dockerfile ,命令是:

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

Builds, (re)creates, starts, and attaches to containers for a service.

Unless they are already running, this command also starts any linked services.

The docker-compose up command aggregates the output of each container (essentially running docker-compose logs -f). When the command exits, all containers are stopped. Running docker-compose up -d starts the containers in the background and leaves them running

关于docker - 在主机之间移动 docker-compose 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47207123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com