• Docker简单使用总结


    写在前面

    最近在部署前后端分离的SpringBoot项目,发现使用Docker技术很方便,特此记录一下Docker常用命令

    1、常用网站

    Docker docshttps://docs.docker.com/ 官方文档

    Docker hubhttps://hub.docker.com/ 镜像仓库

    Windows 安装Docker ,这里推荐使用WSL2的方式,具体可以参考这篇文章:https://segmentfault.com/a/1190000038911660

    Linux安装Docker,这个教程很多,这里提供两个Linux发行版的教程

    更推荐官方文档

    推荐一些快速入门的视频

    2、Docker常用命令

    2.1、Docker服务相关

    1. Docker服务启动

       systemctl start docker
      
      • 1
    2. 守护进程重启

      sudo systemctl daemon-reload
      
      • 1
    3. 重启docker服务

      方法1

      systemctl restart docker
      
      • 1

      方法2

      sudo service docker restart
      
      • 1
    4. 关闭Docker

      方法1

      service docker stop
      
      • 1

      方法2

      systemctl stop docker
      
      • 1

    2.2、常用Docker命令

    1. 查看docker版本

      docker version
      
      • 1
    2. 拉取镜像

      docker pull :
      
      • 1

      image name 是要填入的镜像名,tag为版本号,tag可以省略,默认最新版,tag可以去官方仓库去查

      例如拉取最新版mysql镜像

      docker pull mysql
      
      • 1

      拉取指定版本的mysql镜像

      docker pull mysql:8.0.31
      
      • 1
    3. 查看已拉取的镜像

      docker images
      
      • 1
    4. 删除镜像

      删除镜像前要先删除依赖此镜像的容器,即使这个容器没有运行,也要删除

      docker rmi 
      
      • 1
    5. 运行容器

      基础命令如下

      docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
      
      • 1

      如启动redis

      docker run -itd --name redis-test -p 6379:6379 redis
      
      • 1

      启动mysql

      docker run --name=mysql-test -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
      
      • 1

      注意:此处启动redis和mysql数据存储于容器内,也就是说容器删除后数据会丢失,为了避免这个情况,我们可以将数据存储于宿主机

      启动mysql,数据存于宿主机

      docker run --name mysql-test  -p 3306:3306 -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
      
      • 1
    6. 查看正在运行的容器

      docker ps
      
      • 1

      查看所有容器的详细信息

      docker ps -a
      
      • 1
    7. 启动容器

      docker start 
      
      • 1
    8. 停止容器

      停止单个容器

      docker stop 
      
      • 1

      停止多个容器

      docker stop $(docker ps -a -q)
      
      • 1
    9. 删除容器

      删除单个容器

      docker rm 
      
      • 1

      删除多个容器

      docker rm $(docker ps -a -q)
      
      • 1

    3、Dockerfile的编写

    因为我们的项目需要成为docker的镜像,所以我们必须先编写Dockerfile文件构建我们的项目镜像然后进行编排,Dockerfile文件可以帮我们进行构建。

    FROM openjdk:8
    EXPOSE 8080
    ADD myproject-0.0.1-SNAPSHOT.jar app.jar
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    上面几行命令其实很简单,首先依赖jdk8环境,对外暴露8080,然后就是复制myproject-0.0.1-SNAPSHOT.jar到docker容器中并命名为app.jar,最后是执行命令java -jar /app.jar —spring.profiles.active=pro,使用的是我们另外编写的一个线上环境配置(springboot的配置文件)。

    4、docker-compose的使用

    举个例子:我们需要用到的软件与服务分别有nginx、mysql、redis、还有我们的springboot项目,所以编写如下:

    docker-compose.yml

    version: "3"
    services:
    nginx: # 服务名称,用户自定义
      image: nginx:latest  # 镜像版本
      ports:
      - 80:80  # 暴露端口
      volumes: # 挂载
      - /root/nginx/html:/usr/share/nginx/html
      - /root/nginx/nginx.conf:/etc/nginx/nginx.conf
      privileged: true # 这个必须要,解决nginx的文件调用的权限问题
    mysql:
      image: mysql:5.7.27
      ports:
      - 3306:3306
      environment: # 指定用户root的密码
        - MYSQL_ROOT_PASSWORD=admin
    redis:
      image: redis:latest
    myproject:
      image: myproject:latest
      build: . # 表示以当前目录下的Dockerfile开始构建镜像
      ports:
      - 8081:8081
      depends_on: # 依赖与mysql、redis,其实可以不填,默认已经表示可以
        - mysql
        - redis
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    写在末尾,本文只是简单总结了Docker的使用,更多详细内容请参考官方文档

    参考博客

    https://blog.csdn.net/EasternUnbeaten/article/details/80463837

    https://www.zhuawaba.com/post/84

  • 相关阅读:
    IDEA导入Maven模块未识别,包颜色不对(包显示灰色)
    UML中用例和用例图的概念
    栈和队列的概念和实现
    Arrays类中常用的方法
    Docker Desktop for Windows 安装过程整理
    day10
    一起学docker系列之四docker的常用命令--系统操作docker命令及镜像命令
    Kotlin--内置函数的总结
    文件上传 [ACTF2020 新生赛]Upload1
    Python实现基于用户的协同过滤推荐算法构建电影推荐系统
  • 原文地址:https://blog.csdn.net/qq_50195602/article/details/127593449