以前,要安装docker我会用
apt-get install docker.io
Run Code Online (Sandbox Code Playgroud)
但是,我最近注意到安装docker的文档,它使用docker-ce.我试图找到两者之间的区别,但是已经空了.与docker-ce相关的docker.io是什么?
为了澄清,当我说基本图像时,我的意思是具有所有常见配置的父图像,因此基于它的子项不需要单独下载依赖项.
根据我的理解,docker-compose.yml文件是运行时配置,而Dockerfiles是构建时配置.但是,有一个build
使用docker-compose 的选项,我想知道如何使用它来构建基本图像.
截至目前,我使用一个运行其他shellcript的shellcript.一个人构建我的所有图像,从它创建的基本图像.另一个将它们作为具有必要配置的容器运行.但是,基本映像永远不会作为容器运行.
目前,我希望将shellcript改成docker-compose文件,如下所示:
echo "Creating docker network net1"
docker network create net1
echo "Running api as a container with port 5000 exposed on net1"
docker run --name api_cntr --net net1 -d -p 5000:5000 api_img
echo "Running redis service with port 6379 exposed on net1"
docker run --name message_service --net net1 -p 6379:6379 -d redis
echo "Running celery worker on net1"
docker run --name celery_worker1 --net net1 -d celery_worker_img
echo "Running flower HUD on net1 with port …
Run Code Online (Sandbox Code Playgroud) 目前,我在K8s服务中使用K8s API pod,该服务连接到K8s Redis服务,其中有K8s pod.问题是,我使用NodePort意味着BOTH暴露给公众.我只希望API可以访问公众.问题是如果我将Redis服务不公开,API就无法看到它.有没有办法连接两个服务而不向公众公开?
这是我的API服务yaml:
apiVersion: v1
kind: Service
metadata:
name: app-api-svc
spec:
selector:
app: app-api
tier: api
ports:
- protocol: TCP
port: 5000
nodePort: 30400
type: NodePort
Run Code Online (Sandbox Code Playgroud)
这是我的Redis服务yaml:
apiVersion: v1
kind: Service
metadata:
name: app-api-redis-svc
spec:
selector:
app: app-api-redis
tier: celery_broker
ports:
- protocol: TCP
port: 6379
nodePort: 30537
type: NodePort
Run Code Online (Sandbox Code Playgroud) 我创建 docker-compose.yml 的最初原因是为了利用诸如build:
和depends-on:
制作一个文件来构建我的所有图像并在容器中运行它们。但是,我注意到版本 3 贬低了大多数这些函数,我很好奇为什么我会使用它来构建 shellscript。
这是当前运行我所有容器的 shellscript(我假设这是版本 3 docker-compose 文件将替换的内容,如果我要使用它):
echo "Creating docker network net1"
docker network create net1
echo "Running api as a container with port 5000 exposed on net1"
docker run --name api_cntr --net net1 -d -p 5000:5000 api_img
echo "Running redis service with port 6379 exposed on net1"
docker run --name message_service --net net1 -p 6379:6379 -d redis
echo "Running celery worker on net1"
docker run --name celery_worker1 --net net1 -d celery_worker_img …
Run Code Online (Sandbox Code Playgroud) docker ×3
docker-stack ×2
dockerfile ×2
apt-get ×1
docker-swarm ×1
kubectl ×1
kubernetes ×1
ubuntu ×1
ubuntu-16.04 ×1