赞
踩
1、直接拉取别人构建好的官方镜像
eg:
docker pull zookeeper:3.7.1
2、利用安装包自己编写dockerfile构建
eg:
1)、下载zookeeper安装包
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
2)、编写Dockerfile
FROM test/java8
#我这边是自己构建的java8镜像
ENV ZOOKEEPER_VERSION 3.7.1
COPY apache-zookeeper-${ZOOKEEPER_VERSION}-bin /app
ENV ZOOKEEPER_HOME /app
ENV DOCKER true
RUN cp ${ZOOKEEPER_HOME}/conf/zoo_sample.cfg ${ZOOKEEPER_HOME}/conf/zoo.cfg
EXPOSE 2181 2888 3888
CMD ["/app/bin/zkServer.sh", "start-foreground"]
#CMD ["/bin/bash", "-c", "${ZOOKEEPER_HOME}/bin/zkServer.sh start-foreground"]
3)、编写build.sh一键部署
#!/bin/sh
#Actively load user env
if [ -f "~/.bashrc" ];then
echo "Warning! user bashrc file does not exist."
else
source ~/.bashrc
fi
echo "build docker"
sudo docker build -t heracles/zookeeper:latest .
1、FROM:接基础镜像(可以是官方的也可以自己构建的),第一条必须是FROM,后续指令都会根据该镜像构建
FROM centos
2、MAINTAINER:镜像维护者的姓名和邮件地址
MAINTAINER lishiming@163.com
3、RUN:用于在镜像中执行命令,如下载一些安装包等
RUN yum -y install mysql
4、COPY:用于将本地文件复制到镜像中
COPY app /app
5、ADD:与COPY类似,也可以将本地文件或目录复制到镜像中,但是它还支持更多的功能,例如自动解压缩和自动文件下载,一般情况下都是用COPY
ADD app.tar.gz /app
6、ENV:在镜像中设置环境变量
ENV APP_HOME = /app
7、EXPOSE:声明容器运行时要暴露的端口号
EXPOSE 12345
8、ENTRYPOING:容器启动时执行的命令,不会被docker run接的参数覆盖,用于设置容器执行时的主要命令
ENTRYPOINT ["sh", "/app/bin/start-all.sh"]
9、CMD:也是容器启动时要执行的默认命令,会被docker run后接的参数覆盖
CMD ["/app/bin/zkServer.sh", "start-foreground"]
其中/app/bin/zkServer.sh是命令,start-foreground是参数
CMD也可以作为ENTRYPOINT的参数
ENTRYPOINT ["sh", "/app/bin/dolphinscheduler-daemon.sh"]
CMD ["start", "standalone-server"]
整个命令是这样的:sh /app/bin/dolphinscheduler-daemon.sh start standalone-server,CMD命令后接的是ENTRYPOINT的参数
version: '3'
services:
dolphinscheduler:
build: .
depends_on:
- mysql
- zookeeper
networks:
- heracles-backend
- heracles-db
mysql:
image: mysql:5.7
restart: always
privileged: true
environment:
volumes:
- ./my.cnf:/etc/my.cnf
networks:
heracles-db:
aliases:
- db-mysql
zookeeper:
image: zookeeper:3.7.1
networks:
- heracles-backend
networks:
heracles-db:
heracles-backend:
命令 | 含义 |
---|---|
docker images | grep 镜像名 | 查找指定的镜像 |
docker ps | grep 容器名 | 在运行中的容器中查找指定容器 |
docker ps -a | grep 容器名 | 在所有容器中查找指定容器 |
docker run -d --name 自定义容器名 -p [host_port]:[container_port] 镜像名 | 依据某镜像启动容器,host_port是宿主机的端口号,container_port是容器内部端口号,表示将容器内部的端口映射到宿主机的某个端口上,可以通过宿主机的端口访问容器的端口 |
docker exec -it 容器名 bash | 进入容器 |
docker rm 容器名 | 删除容器 |
docker rmi 镜像名 | 删除镜像 |
docker-compose up -d | 启动所有docker-compose.yml定义的服务 |
docker-compose down | 停止并删除所有docker-compose.yml定义的服务 |
docker-compose logs service名 | 查看docker-compose.yml定义的service日志 |
docker-compose start | 启动所有服务 |
docker-compose stop | 停止所有服务 |
docker-compose restart | 重启所有服务 |
docker network ls | 查看所有docker网络 |
docker network create network名 | 创建docker网络(默认bridge) |
docker inspect 容器名 | 查看docker的详细信息包括安装位置等 |
1、docker与kubernetes
可以大概知道Docker是单一容器引擎,Kubernetes可以管理多个容器,Docker-compose也可以管理多个容器,两者又有什么区别呢?
2、docker-compose与kubernetes
总结:若是单个容器,可以使用多个容器;若是多个容器,可以使用docker-compose;若是生产环境使用很多个容器,可以使用K8s
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。