对于docker的理解
- 容器本质上是一个线程,相当于从物理机中开辟了一个空间,专门给到某个程序使用
- 镜像的本质是一个软件源,这个软件源往往还带有它的环境变量、配置信息
- docker是一个管理容器的平台工具。当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载
- https://hub.docker.com/ 镜像可以从这个站点查看,下载命令也可以从这里查找
- https://yeasy.gitbook.io/docker_practice/image/build 这是docker从入门到实践
- https://www.runoob.com/docker/docker-run-command.html 查询命令大全
基本命令
docker run ubuntu:15.10 /bin/echo "Hello world"
表示在容器内运行一个应用程序。下面 docker run 表示命令的关键字,ubuntu:15.10 表示镜像名称,/bin/echo "Hello world"表示在该镜像内运行的语句。docker stop 2b1b7a428627
停止容器。容器的本质其实是一个线程docker pull <镜像名称>:<tag>
从镜像源获取各种镜像,例如docker pull mysql:5.6
表示下载5.6版本镜像的mysqldocker images
打印本机上所有镜像docker run -d -p 80:80 <镜像名>:<tag>
启动镜像docker search httpd
在远程镜像源查找镜像docker rmi mysql
删除本地的镜像docker build -t docker_file_name .
构建镜像docker push <镜像名>
上传镜像- 为了加速下载镜像文件,国内服务器可以指定国内的镜像!
- 阿里云:https://registry.cn-hangzhou.aliyuncs.com/
- 华为云:https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com/
- Docker中国:https://registry.docker-cn.com
- 网易:http://hub-mirror.c.163.com
- 中科大:https://docker.mirrors.ustc.edu.cn
docker-compose用于大型应用
当一个docker应用是由多个镜像组成的,需要配合着才能正常运行时,一般采用docker-compose
的方式来启动,这些应用包括kafka集群、flink集群等。使用docker compose之后,就不再需要使用命令行来启动docker应用了。
【docker和docker compose的区别】
Docker是一种容器化技术,允许开发人员将应用程序及其依赖项打包在一个可移植的容器中。这个容器可以在任何支持Docker的平台上运行,消除了应用程序在不同环境中的兼容性问题。
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它允许开发人员通过一个单独的文件来定义和配置应用程序需要的所有服务,如数据库、Web服务器、缓存服务等。使用Docker Compose,开发人员可以轻松地在本地构建、测试和部署多容器应用程序,而不必手动编写Docker命令。
因此,Docker和Docker Compose的主要区别在于,Docker用于管理单个容器,而Docker Compose用于管理多个容器。Docker适用于单个容器应用程序,而Docker Compose适用于多容器应用程序,例如Web应用程序、数据库和缓存服务等。
使用方式参考:https://blog.csdn.net/fy512/article/details/122703083
其中以flink为例,docker-compose.yml
文件格式类似:
version: "2.1"
services:
jobmanager:
image: flink:1.13.6-scala_2.12-java8
expose:
- "6123"
ports:
- "8081:8081"
command: jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
taskmanager:
image: flink:1.13.6-scala_2.12-java8
expose:
- "6121"
- "6122"
depends_on:
- jobmanager
command: taskmanager
links:
- "jobmanager:jobmanager"
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager