Docker 使用简介

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

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

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 使用简介》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

The Web Designer's Idea Book, Vol. 2

The Web Designer's Idea Book, Vol. 2

Patrick McNeil / How / 2010-9-19 / USD 30.00

Web Design Inspiration at a Glance Volume 2 of The Web Designer's Idea Book includes more than 650 new websites arranged thematically, so you can easily find inspiration for your work. Auth......一起来看看 《The Web Designer's Idea Book, Vol. 2》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具