用docker-compose部署容器
安装docker-compose
查询docker版本号。
在host上执行。
sudo docker -v
根据查询到的版本号,在下列网站找到对应的docker-compose版本。
https://github.com/docker/compose/releases
指令安装只能安装到1.25.5版本。
执行下列命令,安装docker-compose。
docker-compose为单一可执行文件,将其放到/usr/local/bin
中,给予文件执行权限即可使用。
当前使用的是1.25.5版本。
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
或者通过下列网址下载:
https://github.com/docker/compose/releases
推荐在github上下载最新的后用mov指令放到指定文件夹中
编写docker-compose.yml文件
docker-compose.yml将通过配置的方式代替docker run
冗长的参数。
docker-compose.yml
# 文件格式版本号
# 通过 https://docs.docker.com/compose/compose-file/ 网站获取对应文件格式版本
version: "3.8"
services:
# 配置master容器的参数
master:
# 设定使用的镜像
image: 1259337898/big_data:env
# 设定端口映射
ports:
- "8088:8088" # web应用程序状态查看界面
- "9000:9000" # HDFS文件系统端口
- "50070:50070"
# 设定挂载的卷共享,通过该设置,可以在host与容器之间共享数据
volumes:
- /home/wmx/Documents/hadoop/master/share:/root/share
# 主机名
hostname: master
#容器名
container_name: master
# 依赖关系。如此设定后,master会在worker01与worker02启动之后再启动。
# 通过定义依赖关系,可以自定义容器的启动顺序。
# 无法循环依赖。
links:
- worker01
- worker02
# 设定让容器持续运行
tty: true
# 网络配置
networks:
#此为自定义网络的名称,自定义网络的配置在文件的末尾
hadoop_network:
# 为master分配静态ip
# 目的是为了自动配置/etc/hosts
ipv4_address: 172.19.0.3
# 将worker01与worker02的静态ip加入/etc/hosts中。
extra_hosts:
- "worker01:172.19.0.4"
- "worker02:172.19.0.5"
# 配置worker01容器的参数
worker01:
image: 1259337898/big_data:env
volumes:
- /home/wmx/Documents/hadoop/worker01/share:/root/share
ports:
- "50071:50070"
hostname: worker01
container_name: worker01
tty: true
networks:
hadoop_network:
ipv4_address: 172.19.0.4
extra_hosts:
- "master:172.19.0.3"
- "worker02:172.19.0.5"
# 配置worker02容器的参数
worker02:
image: 1259337898/big_data:env
ports:
- "50072:50070"
volumes:
- /home/wmx/Documents/hadoop/worker02/share:/root/share
hostname: worker02
container_name: worker02
tty: true
networks:
hadoop_network:
ipv4_address: 172.19.0.5
extra_hosts:
- "master:172.19.0.3"
- "worker01:172.19.0.4"
# 自定义网络配置
networks:
hadoop_network:
ipam:
config:
# 设定网关与掩码
- subnet: 172.19.0.0/16
根据docker-compose.yml文件部署镜像
进入docker-compose.yml的目录。
sudo docker-compose up -d
如果配置文件名为其他要加参数-fsudo docker-compose -f 文件名 up -d
通过docker exec命令可以进入启动容器的交互界面。
sudo docker exec -it master bash
sudo docker exec -it worker01 bash
sudo docker exec -it worker02 bash
再次部署容器时,必须删除上一次部署的容器(container)与网络(network)。
在删除容器之前,需要先停止容器。
sudo docker stop <contain id>
停止所有容器:
sudo docker stop $(sudo docker ps -aq)
删除所有容器:
sudo docker container purne