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)。

相关推荐
NiNg_1_23420 分钟前
使用Docker Compose一键部署
运维·docker·容器
萠哥啥都行24 分钟前
Linux安装Docker以及Docker入门操作
运维·docker·容器
王哲晓25 分钟前
Linux通过yum安装Docker
java·linux·docker
汀、人工智能1 小时前
修改Docker默认存储路径,解决系统盘占用90%+问题(修改docker root dir)
docker·容器
吃面不喝汤662 小时前
如何配置和使用自己的私有 Docker Registry
运维·docker·容器
丶21362 小时前
【Nginx】在 Docker 上安装 Nginx 的详细指南
运维·nginx·docker
codelife3212 小时前
在Docker容器中执行命令
容器
petaexpress3 小时前
常用的k8s容器网络模式有哪些?
网络·容器·kubernetes
m0_741768859 小时前
使用docker的小例子
运维·docker·容器