• Docker常用命令


    1、什么是Docker?优点是什么?有哪些核心概念?

    Docker 是一个开源的应用容器引擎,是一款快速构建、运行、管理应用的工具。容器完全使用沙盒机制,互相之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖任何语言、框架或包装系统

    1. 优点:Docker可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用;
    2. 镜像:将应用所需要的函数库、依赖、配置等与应用一起打包得到的就是镜像。
    3. 容器:根据镜像的应用进程创建的隔离环境就是容器。
    4. 镜像仓库:存储和管理镜像的服务就是镜像仓库。(最大的镜像仓库:DockerHub)

    2、镜像操作命令有哪些?

    1. 搜索:docker search 镜像名称
    2. 拉取:docker pull
    3. 推送:docker push
    4. 查看(所有)镜像:docker images [-q]
    5. 删除:docker rmi 镜像名称
    6. 删除所有:docker rmi 'docker images -q'
    7. 制作镜像:docker build -t 镜像名称 .
    8. 导出镜像:docker save -o 镜像名称.tar 镜像名称
    9. 加载镜像:docker load -i 镜像名称.tar
    10. 容器转为镜像:docker commit 容器名称 镜像名称

    3、容器操作命令有哪些?

    1. 查看(正在运行的):docker ps [-a]
    2. 删除(强制):dockers rm [f] 容器名称
    3. 删除所有:docker rm -f $(docker ps -a)
    4. 创建容器:docker create -d --name=容器名称 -p宿主机端口:容器内端口 镜像名称
    5. 创建并运行容器:docker run -d --name=容器名称 -p宿主机端口:容器内端口 镜像名称
    6. 启动容器:docker start 容器名称
    7. 停止容器:docker stop 容器名称
    8. 重启容器:docker restart 容器名称
    9. 暂停容器:docker pause 容器名称
    10. 恢复容器:docker unpause 容器名称
    11. 进入容器:docker exec -it 容器名称 /bin/bash
    12. 查看容器信息:docker inspect 容器名称或容器id
    13. 创建容器相关设置:
      • 自启动:restart=always
      • 挂载数据卷:-v es-data(数据卷名称):/usr/share/elasticsearch/data(容器内)
      • 创建网络:docker network create es-net(网络名称)
      • 加入网络:-- network es-net(网络名称)
      • 端口映射:-p 宿主机端口:容器内端口
    1. 修改容器设置语法:docker update --restart=no(相关设置) 容器id

    4、数据卷操作命令有哪些?

    1. 创建数据卷:docker volume create 数据卷名称 (位于/var/lib/docker/volume目录)
    2. 查看当个数据卷详情:docker volume inspect 数据卷名称
    3. 查看数据卷列表:docker volume ls
    4. 删除数据卷:docker volume rm 数据卷名称
    5. 删除未使用的数据卷:docker volume prune
    6. 创建容器时挂载数据卷:
      • 挂载数据卷(会自动创建数据卷):docker run -v 数据卷名称:容器内目录路径
      • 挂载指定目录(要自己创建):docker run -v 绝对路径:容器内目录路径
    1. (补充)docker 网络:
      • 删除网络:docker network rm 网络名
      • 查看所有网络:docker network lss
      • 将容器连接到指定网络:docker network connect 网络名称 容器名称
      • 断开容器的网络:docker network disconnect 网络名称 容器名称

    5、docker如何自定义镜像?docker file的语法是什么样的?

    一、创建一个空目录,在这个空目录中创建一个文件,命名为 DockerFile,最后将 java 项目打包成 jar 包,放到这个目录中;

    二、编写 Dockerfile 文件

    主要编写以下信息:

    1. 基于 java:8-alpine 作为基础镜像
    2. 将 app.jar 拷贝到镜像中
    3. 暴露端口
    4. 编写入口 ENTRYPOINT

    Ps:Dockerfile的第一行必须是FROM;从一个基础镜像来构建基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine

    1. # 指定基础镜像
    2. FROM java:8-alpine
    3. # 拷贝 java 项目包
    4. COPY ./docker-demo.jar /tmp/app.jar
    5. # 暴露端口
    6. EXPOSE 8090
    7. # 入口,java项目的启动命令
    8. ENTRYPOINT java -jar /tmp/app.jar使用 docker build 构建为一个镜像

    三、使用 docker build 构建为一个镜像

    • -t 表示设置镜像名和版本号(自定义)
    • . 表示 Dockerfile 所在目录,因为刚刚我是将 Dockerfile 放在了当前文件目录下,所以就用 . 来表示当前目录

    通过 docker images 就可以看到刚刚构建好的镜像

    四、使用 docker run 运行镜像

    这时候你就可以根据服务器 IP 和自己配置的镜像映射端口号以及项目地址就可以访问了(注意:如果需要访问,别忘了开放云服务器的端口号的防火墙)。

    DockerFile本质就是一个文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。

    6、docker compose是干嘛的?语法是什么样的?

    1、Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!相当于批量的docker run。

    2、Docker-Compose 将所管理的容器分为三层

    工程(project):一个工程包含多个服务
    服务(service):一个服务当中可包括多个容器实例
    容器(container)
    Docker-Compose 运行目录下的所有文件(docker-compose.yml、extends文件 或 环境变量文件等)组成一个工程,若无特殊指定 工程名即为当前目录名。

    Docker Compose 的核心就是其配置文件,采用 YAML 格式,默认为 docker-compose.yml 。

    在这里插入图片描述

    一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。

    一个服务当中可包括多个容器实例,但是:Docker-Compose 并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul 技术。

    Docker-Compose 的工程配置文件默认为 docker-compose.yml,可通过环境变量 COMPOSB_FILE 或 -f 参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

    Compose 允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一组相关联的应用容器为一个项目 (project)。

  • 相关阅读:
    寒气笼罩中的一线暖冬
    『无为则无心』Python基础 — 44、对文件和文件夹的操作
    软件测试:黑盒测试用例的四种设计方法
    [附源码]java毕业设计基于的高校学生考勤管理系统
    3D手眼标定之原理(3D Vision Roboot Eye-to-hand Calibration)
    HTML网页规划与设计【冬季奥林匹克运动会——带报告5200字】HTML+CSS+JavaScript
    无人机飞行特点
    Vue - 事件处理器 - 自定义组件 - 综合案例
    什么年代了,还在用FastQC?试试Falco吧
    GitHub配置账号Pull Request更新代码分支
  • 原文地址:https://blog.csdn.net/Treeers/article/details/142276754