在使用docker和docker compose时,我有点困惑:
有了dockerfile,我可以构建、运行docker应用程序映像,并将其推送到docker hub,以允许其他人在本地计算机上下载和运行它。
我可以构建,运行和推送服务映像(例如:redis,cassandra等)
我的关注:
我得到了一个包含以下文件的应用程序文件夹:
- main.go # the main app in Golang
- Dockerfile # container definition file
- Docker-compose.yml # contains all the services ( Redis and Cassandra)
我应该使用哪个命令在docker hub上构建和推送我的整个应用程序及其服务?docker还是docker-comush?
考虑这一点的一个有用的概念方法是,docker组合。yml
文件指定了一组docker build
和docker run
命令。不能单独推送docker compose。yml
文件到Docker Hub或其他注册表,在典型的Compose设置中,有许多标准映像引用,您不需要自己推送它们(无论在哪里运行,标准Docker Hubredis
和cassandra
映像都可以)。
这意味着你需要做两件事:
docker-compose.yml
文件或以其他方式运行组合应用程序。您可以使用docker compose push
,但在CI环境中,使用docker build
和docker push
可能更简单一些。从机械上来说,它们没有什么不同。
确保映像包含运行应用程序所需的所有内容,包括外部依赖项。理想的情况是,docker可以通过--net
、-e
和-p
设置来运行应用程序容器,对其进行配置,但无需单独提供应用程序代码或命令。在一个docker组合中。yml
文件,查看是否可以仅使用端口:
、环境:
、和图像:
(和构建:
)运行它。更喜欢docker文件中的CMD
,而不是docker compose中的
。如果要将主机代码绑定到容器中(对于Go和其他编译语言不太可能),请删除那些命令:
。yml卷:
。
使用Compose部署东西的典型顺序可能如下所示:
here$ docker build -t me/myapp:20200525 .
here$ docker push me/myapp:20200525
here$ scp docker-compose.yml there:
here$ ssh there
there$ MYAPP_TAG=20200525 docker-compose up -d
请注意,我们唯一直接复制到目标系统的是docker compose。指定如何运行图像的yml
;我们没有复制任何应用程序代码或其他依赖项,因为它们都封装在映像中。
问题内容: 我已经创建了自己的docker文件(该文件运行一个显示“ helloworld”的shell脚本)。图像是“ hellodocker”,标签是“ mytag”,我现在拥有: 如何将Docker映像推送到dockerhub?我用。这给出了“无此类ID”错误。我想念什么?提前致谢。 问题答案: 您要么在构建时就将其标记为标签,例如 或创建绑定到同一图像的新标签,即
是否有理由使用启动一个文件,或者您应该只使用? 我知道可以启动一个特定的容器,但我指的是在不指定容器的情况下使用它以启动所有yml容器的情况。
准备工作 对于Window用户,请点击Kitematic左下方的DOCKER CLI按钮,在弹出的命令窗体内输入命令,不要在CMD中测试Docker命令。 下载镜像,以kitematic/hello-world-nginx为例: docker pull kitematic/hello-world-nginx 常用命令测试一览表 命令 解释 docker images 列表本地所有镜像 docker
问题内容: 有没有使用启动文件的理由,还是应该使用? 我了解这可以启动特定的容器,但是我指的是在不指定容器的情况下使用它的情况,这样它就可以启动所有yml容器。 问题答案: 如(2015)中所述 运行传递的命令将覆盖服务配置中定义的命令 。 例如,如果Web服务配置以开头,则用覆盖它。 第二个区别是该命令 不创建服务配置中指定的任何端口 。 这样可以防止端口与已经打开的端口发生冲突。如果确实要创建
问题内容: 我使用Ubuntu进行开发和部署,并且需要创建一个隔离的环境。 我正在考虑为此目的使用Vagrant或Docker。优缺点是什么,或者这些解决方案相比如何? 问题答案: 如果您的目的是隔离,那么我认为Docker是您想要的。 Vagrant是虚拟机经理。它允许您编写虚拟机配置和配置脚本。但是,它仍然是虚拟机,取决于VirtualBox(或其他),具有巨大的开销。它要求您拥有一个巨大的硬
所以我创建了一个Docker中心映像,如下所示,工作正常 几周后,我需要为新的软件版本重建映像,所以我做到了 但是最后的推送命令失败了 运行docker images可以提供: