Docker

96 阅读4分钟

是什么

开源的应用容器引擎

类似于虚拟机,但不是虚拟机,实现了虚拟机技术中的资源隔离,是一种**轻量级容器技术**。

轻量级:所需资源少,启动很快。

虚拟机是重量级的。

有什么用

允许用户打包自己安装、配置好的应用环境并发布镜像,别人下载这个镜像并运行就可以获得和该用户一模一样的应用环境

比如,安装mysql,下载别人安装配置好的mysql镜像,直接在docker中运行,就可以获得和别人一模一样的mysql服务,而不用自己下载、安装、配置(可能还会出问题)。

如何用

  • 下载镜像
  • 运行镜像

基础

概念

  • 镜像:安装并配置好的应用环境被打包后的产物

    一个镜像可能包含多个应用

  • 容器:运行镜像就会产生一个容器,之后就可以对容器进行操作了:启动容器、停止容器、重启容器。

    一个容器中可能运行一个或多个应用。

  • 仓库:存放镜像。

    分公有仓库、私有仓库

类比:

  • 镜像 类比 软件安装包,比如.exe安装程序
  • 容器 类比 使用安装包安装的应用(只不过容器中可能包含多个应用程序)
  • 仓库 类比 存放软件安装包的地方

另一个角度理解:

  • 镜像,就是一个应用环境模板或者配置
  • 容器,运行镜像后会得到一个容器,相当于是创建了这么一个应用环境,是应用环境实例
  • 仓库,存放镜像的。

再来一个理解:
一个人的房子做的很好、装修的也很好,然后别人也想要一模一样的,于是这个人画了房子的图纸及装修说明,其他人拿到图纸及装修说明后按照上面做房子、装修就能得到一模一样的房子。
房子的图纸及装修说明就是镜像。
房子就是容器。

安装

下载并启动elasticsearch镜像实例

blog.csdn.net/qq_40942490…

docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.8.0

常用操作命令

镜像操作

repository:tag表示一个镜像,同一个仓库源可以有多个tag,代表不同版本。

  • docker images:查看本地所有镜像

  • docker pull:获取镜像

  • docker search:搜索镜像

    Docker Hub

  • docker run:运行镜像,会产生一个容器。

    • -i: 交互式操作。
    • -t: 终端。
    • -d:在后台运行。

    --name 命名容器

    网络端口映射:

    • -P:容器内部端口随机映射到主机的端口
    • -p:容器内部端口绑定到指定的主机端口
  • docker rmi:删除镜像

  • 创建镜像:

    • 已创建的容器更新镜像,并提交

    1. 在运行的容器中使用apt-get update更新镜像
    2. exit退出镜像
    3. docker commit提交修改
    • 使用 Dockerfile文件 + docker build来创建一个新的镜像
  • docker tag:设置镜像标签

容器操作

  • docker ps:查看容器(默认仅显示running的)

    -a:显示所有容器

    -l:查看最后一次创建的容器

  • docker create:创建容器

  • docker start [容器id]:启动已停止的容器

  • docker stop [容器id]:停止容器

  • docker restart [容器id]:重启容器

  • 进入容器:

    • docker attach
    • docker exec:推荐,因为退出容器终端,不会导致容器的停止。
  • docker export

  • docker import

  • docker rm:删除容器

    -f:强制

  • docker container prune:清理掉所有处于终止状态的容器

    prune:修剪、裁剪、精简、缩减

其他命令

  • docker port 【容器id或name】:查看端口的绑定情况

  • docker logs 【id或name】:查看容器内部的标准输出

    -f:tail -f的效果

  • docker inspect

docker exec详解

进入容器 docker exec -it 容器名 bash

docker run详解

重点:

-v:绑定一个卷。作用:将宿主机的一个文件和容器内的一个文件绑定,就可以通过修改宿主机中的文件来修改容器中的文件(比如,配置文件)

为啥要这样?
因为运行容器中的命令程序要使用容器中的配置文件,比如,redis-server。
容器中没有vi命令,无法修改文件。