
docker run --name myredis -p 6379:6379 -d redis redis-server --save 60 1 --loglevel warning
docker volume --help
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v html:/root/html
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25
docker exec -it mysql mysql -u root -p
自定义镜像需要自己写一个构建镜像的脚本,脚本大致分为4部分:
(1)基础镜像环境
(2)对基础镜像进行自定义操作
(以配置jdk环境举例,需要在基础镜像里创建jdk目录,将jdk安装包拷贝到基础镜像里,解压安装,配置环境参数等等。。。)
(3)暴露端口
(做这些工作肯定是要对外服务的,一般形式通过端口进行交互)
(4)启动命令
(上面配置好这么多东西,docker启动自定义镜像的时候需要帮你做什么?java项目肯定是要启动java -jar啦)
脚本如下,命名为 Dockerfile ,没有文件后缀名
- # 指定基础镜像
- FROM ubuntu:16.04
- # 配置环境变量,JDK的安装目录
- ENV JAVA_DIR=/usr/local
-
- # 拷贝jdk和java项目的包
- COPY ./jdk8.tar.gz $JAVA_DIR/
- COPY ./docker-demo.jar /tmp/app.jar
-
- # 安装JDK
- RUN cd $JAVA_DIR \
- && tar -xf ./jdk8.tar.gz \
- && mv ./jdk1.8.0_144 ./java8
-
- # 配置环境变量
- ENV JAVA_HOME=$JAVA_DIR/java8
- ENV PATH=$PATH:$JAVA_HOME/bin
-
- # 暴露端口
- EXPOSE 8090
- # 入口,java项目的启动命令
- ENTRYPOINT java -jar /tmp/app.jar
docker build -t javaweb:1.0 .
构成 docker build -t + 镜像名称 + : + 版本号 + Dockerfile所在文件路径
构建完成后通过 docker images 查看是否生成自定义镜像。
docker既然是基于基础镜像进行构建自定义镜像,那这个基础镜像好像也不一定只能是一个linux系统镜像,比如可以是一个配置好jdk环境的基础镜像,可以是配置好maven、node.js等等的镜像。
以java项目举例,那就不需要像上面一样,每次都用linux系统镜像,安装jdk,再导入jar包,再启动。而是改成了用jdk的基础镜像,导入jar包,再启动
脚本如下,在dockerhub上找一个jdk的基础镜像,然后将你的jar放入进去即可
- # 指定基础镜像
- FROM qorzj/java8-alpine:latest
- COPY ./docker-demo.jar /tmp/app.jar
-
-
- # 暴露端口
- EXPOSE 8090
- # 入口,java项目的启动命令
- ENTRYPOINT java -jar /tmp/app.jar
注意
