Docker 使用简介

栏目: 编程工具 · 发布时间: 5年前

内容简介:与传统的虚拟机相比拥有以下优势:

Docker 是使用 GoLang 开发的开源容器引擎,可以方便的打包开发好的应用,然后分发到任意 linux 主机上。

与传统的虚拟机相比拥有以下优势:

  • 高效的系统资源利用率

    由于不需要进行硬件虚拟和运行完整的操作系统等额外开销,无论是应用执行速度、内存损耗或者文件存储速度, Docker 都更加高效

  • 更快的启动速度

    Docker 容器应用直接运行与宿主内核,无需启动完整的操作系统,可以做到秒级启动

  • 一致的运行环境

    Docker 镜像提供了除内核外的完整运行环境,确保了应用运行环境的一致性

  • 持续交付和部署

    可以通过 Docker 镜像来实现服务的持续交付、部署。使用 Dockerfile 来构建镜像,使用持续集成系统进行集成测试;使用镜像结合持续部署系统进行自动部署

  • 迁移轻松

    只需要迁移镜像及镜像运行的数据就可在其他主机或平台运行

  • 易于维护和扩展

    由于使用镜像进行部署,使维护更为容易。由于支持在镜像的基础上进行定制,使得扩展变得更简单。而官方也维护了一大批高质量的 镜像 ,大大降低了镜像的制作成本

基本概念

仓库

Docker 提供了仓库( Repository )用于存放制作好的镜像,方便使用者获取,在本地可通知配置多个 Repository

  • 拉取

    可以使用命令来拉取镜像:

    docker pull [repo url>/]image name>

    默认的 repo urlhub.docker.com ,拉取默认仓库中的镜像时是不需要 url 的。

    如拉取 debiandocker pull debian

  • 推送

    我们也可将自己制作好的镜像推送到仓库,以便分发,使用命令:

    docker push [<repo url>/]<image name>[:<image tag>>

  • 搜索

    使用 docker search 命令则可搜索默认 repo url 内的镜像。

  • 镜像加速

    由于默认 repo url 在国外,为了加快拉取速度,需要指定其为国内的,向 /etc/docker/daemon.json 中添加:

    {
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }

    便可使用 Docker 在中国的镜像加速站。

    对于企业用户还可搭建自己的私有镜像仓库,方便管理内部镜像。

镜像

镜像是经过 Dockerfile 规则打包生成的, Dockerfile 文件了指明了镜像的生成及运行方式。

Dockerfile

这里简单介绍下 Dockerfile 中常用的命令:

  • FROM

    指明基于那个镜像,通常是一个系统环境,如 debian 。在多阶段( stage )构建中可使用 FROM ... AS ... 来命令阶段,供后面的阶段使用

  • ENV

    设置镜像的环境变量

  • EXPOSE

    导出端口,语法: EXPOSE port/protocol

  • RUN

    执行一条命令

  • COPY

    复制镜像内部的文件,也可从指定 stage 中复制文件,使用 --from=<stage name> 来实现

  • ADD

    复制本地文件到镜像中,并做了一些额外工作,如自动解压文件、保持文件属性等

  • WORKDIR

    切换工作目录

  • CMD

    执行命令,极容易在 docker run 时被覆盖。主要用于指定镜像的默认启动命令,有以下三种语法:

    • CMD ["executable", "param1", "param2"] Exec 模式,首先
    • CMD ["param1", "param2"] 设置 ENTRYPOINT 的默认参数
    • CMD command param1 param2 Shell 模式
  • ENTRYPOINT

    指定镜像默认的运行命令,可以使用 --entrypoint 参数在 docker run 时覆盖 Dockerfile 内的 ENTRYPOINT

    ExecShell 两种模式

    通常使用这个命令来指定镜像的启动命令,因为 CMD 稍不注意就被覆盖了

更多关于 Dockerfile 内容请参见: Dockerfile reference

这里给出一个简单的 Dockerfile=, 是 =debian sid 的:

FROM scratch
ADD rootfs.tar.xz /
CMD ["bash"]

创建

使用 docker build -f <Dockerfile path> [-t <image name>[:<tag>]] . 创建镜像和标记 Tag

Tag 可用来标记不同的镜像版本,就像版本号。

列出

使用 docker image ls 可以列出下载下来的镜像

运行

使用 docker run 命令运行镜像,可使用参数配置,下面给出一个例子:

docker run -it -d -p <local port>:<container port> -v <local path>:<container path> <image>

  • -i 是交互式操作
  • -t 是终端
  • -p 指定端口映射
  • -v 指定 volume 映射
  • -d 后台模式

删除

使用 docker image rm <image id> 删除镜像

导入和导出

docker save <image id> > <image save>.tar
docker load < <image save>.tar

容器

容器是镜像运行后的实体,运行与属于自己的独立的命名空间。

创建

使用 docker run 命令启动镜像就可以创建一个容器

列出

使用 docker ps 可列出正在运行的容器,加上 -a 参数可列出所以存在的容器

控制

  • 启动

    使用 docker container start <containe id> 启动容器

  • 终止

    使用 docker container stop <containe id> 终止容器

  • 暂停

    dcoker container pause <containe id>

  • 重启

    dcoker container restart <containe id>

  • 日志

    dcoker container logs <containe id>

删除

docker container rm <container id> 命令可删除容器

进入容器

使用 docker exec -it <container id> /bin/sh 命令可进入容器的执行环境

导入和导出

docker import <container export>.tar <container name>
docker export <container id> > <container export>.tar

部署

直接运行镜像不便于部署服务,因而官方推出了 Docker Compose 来负责应用部署。

使用 docker-compose.yml 文件将应用需要的镜像都定义在一起,然后使用 docker-compose 命令来部署。

docker-compose.yml 的语法详见: Compose file version 3 reference ,这里给出一份部署 wordpress 的文件:

version: "3.7"

services:
  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    networks:
      - backend

  mysql:
    image: mysql
    volumes:
       - db-data:/var/lib/mysql/data
    networks:
       - backend

volumes:
  db-data:

networks:
  backend:

常用命令

  • up

    启动服务,加上 -d 表示在后端运行

  • down

    终止服务

  • build

    构建服务中的容器

  • config

    验证文件格式是否有误

  • exec

    进入指定的容器,如进入上面 wordpress 中的 mysql 则是: docker-compose exec mysql

  • logs

    显示日志,可指定容器

  • restart

    重启服务

更多命令请见: Overview of docker-compose CLI


以上所述就是小编给大家介绍的《Docker 使用简介》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法设计与分析基础

算法设计与分析基础

Anany Levitin / 清华大学出版社 / 2007-11 / 59.00元

作者基于丰富的教学经验,开发了一套对算法进行分类的新方法。这套方法站在通用问题求解策略的高度,能对现有的大多数算法进行准确分类,从而使读者能够沿着一条清晰的、一致的、连贯的思路来探索算法设计与分析这一迷人领域。本书作为第2版,相对第1版增加了新的习题,还增加了“迭代改进”一章,使得原来的分类方法更加完善。 本书十分适合作为算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要......一起来看看 《算法设计与分析基础》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具