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

复制代码
# 指定基础镜像
FROM java:8-alpine
 
# 拷贝 java 项目包
COPY ./docker-demo.jar /tmp/app.jar
 
# 暴露端口
EXPOSE 8090
 
# 入口,java项目的启动命令
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)。

相关推荐
2302_809798324 分钟前
【JavaWeb】Docker项目部署
java·运维·后端·青少年编程·docker·容器
嵌入式大圣6 分钟前
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
运维·docker·容器
孔令飞21 分钟前
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
ai·云原生·容器·golang·kubernetes
极简网络科技2 小时前
Docker、Wsl 打包迁移环境
运维·docker·容器
杨浦老苏2 小时前
轻量级Docker管理工具Docker Switchboard
运维·docker·群晖
江湖有缘2 小时前
【Docker管理工具】部署Docker可视化管理面板Dpanel
运维·docker·容器
一加一等于二3 小时前
docker部署postgresql17,并且安装插件
docker·postgresql
猫咪老师19954 小时前
多系统一键打包docker compose下所有镜像并且使用
java·docker·容器
aitav04 小时前
⚡️ Linux Docker 基本命令参数详解
linux·运维·docker
Nazi64 小时前
docker数据管理
运维·docker·容器