• 初识docker


    基础操作

    查看镜像列表

    docker images

    拉取镜像

    docker pull  redis

    Docker Hub

    镜像打包

    docker  save  -o  redis.tar  redis:latest

    删除镜像

    docker rmi redis:latest

    导入镜像

    docker load -i reids.tar

    容器命令

    创建并运行一个容器

    docker run --name mynginxserver -p 8080:80 -d nginx:6.2.0

    docker run --name myredis -p 6379:6379  -d redis redis-server --save 60 1 --loglevel warning

    暂停容器运行

    docker pause

    恢复容器运行

    docker unpause

    停止容器运行

    docker stop  mynginxserver

    启动容器

    docker start  mynginxserver

    查看容器运行日志

    docker logs  -f  mynginxserver

    查看所有运行的容器和状态

    docker ps

    查看所有容器

    docker ps -a

    进入容器执行命令

    docker exec  -it  mynginxserver  bash

    docker exec -it myredis  redis-cli

    删除容器

    docker rm  mynginxserver

    数据卷

    docker volume --help

    查看数据卷列表

    docker volume ls

    创建一个名为html的数据卷

    docker volume create html

    查看数据卷html具体映射哪个真实文件夹

    docker volume inspect html

    删除html数据卷

    docker volume rm html

    清理所有未使用的数据卷

    docker volume prune

    挂载 数据卷、目录、文件

    mysql为例  (-v为挂载命令)

    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

    进入mysql

    docker exec -it mysql mysql -u root -p

    自定义镜像

    自定义镜像需要自己写一个构建镜像的脚本,脚本大致分为4部分:

    (1)基础镜像环境

    (2)对基础镜像进行自定义操作

    (以配置jdk环境举例,需要在基础镜像里创建jdk目录,将jdk安装包拷贝到基础镜像里,解压安装,配置环境参数等等。。。)

    (3)暴露端口

    (做这些工作肯定是要对外服务的,一般形式通过端口进行交互)

    (4)启动命令

    (上面配置好这么多东西,docker启动自定义镜像的时候需要帮你做什么?java项目肯定是要启动java -jar啦)

    脚本如下,命名为 Dockerfile ,没有文件后缀名

    1. # 指定基础镜像
    2. FROM ubuntu:16.04
    3. # 配置环境变量,JDK的安装目录
    4. ENV JAVA_DIR=/usr/local
    5. # 拷贝jdk和java项目的包
    6. COPY ./jdk8.tar.gz $JAVA_DIR/
    7. COPY ./docker-demo.jar /tmp/app.jar
    8. # 安装JDK
    9. RUN cd $JAVA_DIR \
    10. && tar -xf ./jdk8.tar.gz \
    11. && mv ./jdk1.8.0_144 ./java8
    12. # 配置环境变量
    13. ENV JAVA_HOME=$JAVA_DIR/java8
    14. ENV PATH=$PATH:$JAVA_HOME/bin
    15. # 暴露端口
    16. EXPOSE 8090
    17. # 入口,java项目的启动命令
    18. 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放入进去即可

    (一定要注意安全啊,因为看不见基础镜像里到底都有啥,感觉重要的东西还是自己构建镜像好)

    1. # 指定基础镜像
    2. FROM qorzj/java8-alpine:latest
    3. COPY ./docker-demo.jar /tmp/app.jar
    4. # 暴露端口
    5. EXPOSE 8090
    6. # 入口,java项目的启动命令
    7. ENTRYPOINT java -jar /tmp/app.jar

     注意


     

  • 相关阅读:
    springboot整合IBM的detect-secrets
    React18源码: reconciler执行流程
    (高阶)Redis 7 第12讲 数据双写一致性 经验篇
    记一次 .NET 某消防物联网 后台服务 内存泄漏分析
    vivado 通过修改调试核 (ILA) 来进行增量编译
    移动端异构运算技术 - GPU OpenCL 编程(基础篇)
    构建汽车技术与装备交流平台,“中国汽研”开启汽车产业高质量发展新章
    【JavaScript】获取网页元素
    bert Bert文本分类教程 数据+完整代码 可直接运行
    深度学习概念——端对端
  • 原文地址:https://blog.csdn.net/qq_43319748/article/details/128165954