Docker是一种轻量级的、可重用的、便携的、可执行的软件包,用于开发、分发和部署。开发者可以将多种不同的软件(平台)组合在一起,以定制和创建特定的应用程序。例如,使用大数据中的Kafka设施需要许多要求和专业知识来设置配置。
Docker Registry是由第三方托管的服务,例如:
开发者将他们的镜像放入上述提到的Docker注册表之一。另一方面,Docker Repository是一组具有相同名称但不同版本或标签的不同Docker镜像。
Docker CLI是特定于单个或单独容器的,例如:
docker run hello-world
docker pull repository/image_name
上述提到的CLI指令可以访问守护进程API。而Docker Compose CLI可以将多容器组合在一起,只需运行一条命令行docker-compose up。
它易于跟踪、网络和资源管理,最后但同样重要的是它是可重用的。镜像被设计为编排相关镜像的层。它需要Docker文件在YML中,允许多个容器。
YAML是一种标记语言,它更侧重于数据而不是传统的标记导向(如XML或HTML)。它是区分大小写的,并且是人类可读的,主要用于不同平台之间的配置。
Docker Compose只需要编写一个:
docker-composer.yml
并通过docker-compose up运行它。因此,可以通过一条命令行从Docker获得服务或应用程序。
构建Docker文件是制作镜像的第一步,当客户端拉取镜像并开始运行镜像时,它就变成了一个容器,换句话说,容器是镜像的一个实例,就像面向对象中的一个对象是一个类的实例一样。
第一步是访问这个链接并选择Get Docker Desktop — Windows (stable):
docker-ce-desktop-windows
点击Docker for Windows Installer,这是一个.exe文件,并尝试按照以下步骤安装Docker:可以勾选第二个复选框,因为当在Windows上工作时,可以使用容器用于Windows或Linux,但要注意Docker镜像的标签,如果它指定为Linux,那么容器也应该是Linux。
启用Windows的Hyper-V,之后机器将被安装,其他VirtualBox无法与Docker并行工作。
现在,如果有一个Docker ID,可以登录,否则进行下一步。
为了创建一个Docker ID,请选择注册并输入Docker ID,它应该是唯一的。然后应该验证电子邮件地址。
要检查Docker是否已正确安装,请输入以下每行,并在结束后按Enter按钮,如图。(可以使用“Windows PowerShell”来运行Docker命令。)
docker --version
docker-compose --version
docker run hello-world
安装Docker Repository:
有两种方式在Linux上安装Docker:
从Repository安装Docker:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
sudo apt-key fingerprint
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
要在Linux上安装Docker CE,请访问这个链接,Ubuntu必须是64位的:
docker-ce-ubuntu
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker --version
docker-compose --version
sudo docker run hello-world
在这个例子中,Kafka需要Zookeeper来运行。因此,需要从Docker中拉取两个不同的镜像并将它们组合在一起,因此根据第一章“Docker Composer”,而不是一个接一个地拉取镜像,必须编写“docker-compose.yml”,并更改目录到docker-compose.yml所在的位置,然后运行:
docker-compose up
version: "2"
services:
kafkadocker:
image: "spotify/kafka:latest"
container_name: kafka
hostname: kafkadocker
networks:
- kafkanet
ports:
- 2181:2181
- 9092:9092
environment:
ADVERTISED_HOST: kafkadocker
ADVERTISED_PORT: 9092
kafka_manager:
image: "mzagar/kafka-manager-docker:1.3.3.4"
container_name: kafkamanager
networks:
- kafkanet
ports:
- 9000:9000
links:
- kafkadocker
environment:
ZK_HOSTS: "kafkadocker:2181"
networks:
kafkanet:
driver: bridge
然后转到项目的路径:
docker login docker.io
docker push reponame/imgname:latest
然后检查Docker仓库页面以确保一切正常。