资讯专栏INFORMATION COLUMN

Docker 使用简介

kelvinlee / 2545人阅读

摘要:由于支持在镜像的基础上进行定制,使得扩展变得更简单。而官方也维护了一大批高质量的镜像,大大降低了镜像的制作成本基本概念仓库提供了仓库用于存放制作好的镜像,方便使用者获取,在本地可通知配置多个。

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 [/][:>

搜索

使用 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= 来实现

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 [-t [:]] . 创建镜像和标记 Tag

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

列出

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

运行

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

docker run -it -d -p : -v :

-i 是交互式操作

-t 是终端

-p 指定端口映射

-v 指定 volume 映射

-d 后台模式

删除

使用 docker image rm 删除镜像

导入和导出

导出: docker save > .tar

导入: docker load < .tar

容器

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

创建

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

列出

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

控制

启动

使用 docker container start 启动容器

终止

使用 docker container stop 终止容器

暂停

dcoker container pause

重启

dcoker container restart

日志

dcoker container logs

删除

docker container rm 命令可删除容器

进入容器

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

导入和导出

导入: docker import .tar

导出: docker 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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27792.html

相关文章

  • Docker容器系列教程(一):简介与安装

    摘要:容器镜像运行后,此时就实例化了一个容器。侧重的是应用级别,而虚拟机是彻底隔离整个运行环境。方便交付将应用以及运行环境打包成一个镜像,交付更简单高效。下载地址点击运行即可一如既往的下一步下一步完成安装。 Docker是什么 Docker是一款由DotCloud公司(现改名为Docker)基于Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发...

    BlackHole1 评论0 收藏0
  • Docker-Compose学习笔记(1)安装简介

    摘要:概述是一个用来定义和运行复杂应用的工具。使用,用户通过来进行构建。使用,不再需要使用脚本来启动容器。在配置文件中,所有的容器通过来定义,然后通过脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。 概述 Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成...

    shiyang6017 评论0 收藏0
  • Docker-Compose学习笔记(1)安装简介

    摘要:概述是一个用来定义和运行复杂应用的工具。使用,用户通过来进行构建。使用,不再需要使用脚本来启动容器。在配置文件中,所有的容器通过来定义,然后通过脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。 概述 Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成...

    zxhaaa 评论0 收藏0
  • microservices-with-docker-flask-and-react 简介

    摘要:前置条件这不是一个入门课程。此课程为至少有六个月网站开发经验的高级入门者设置。主题资源目标这部分结束,具备以下能力。。。第一部分完整代码依赖第一部分依赖耗时一章需要几个小时到一整天。空余大块时间来完成一章,特别是,,这些较难的部分。 在第一部分, 你学到如何使用 Docker 来创建一个基于python, postgres, 和 flask web 框架的 RESTful API 可重...

    lily_wang 评论0 收藏0
  • Flux7 Docker 系列教程(一):Docker 简介

    摘要:本系列教程翻译自,系列共有九篇,本文译自第一篇。,一种新的容器化技术,因为轻量级和便携化而受到广泛关注。本篇文章是系列教程的第一篇。镜像只读的容器模板,简言之就是系统镜像文件。首先,向发出请求创建一个镜像并且指定容器内要运行的命令。 本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第一篇 Part 1: An Introduction。...

    zhaofeihao 评论0 收藏0
  • Flux7 Docker 系列教程(一):Docker 简介

    摘要:本系列教程翻译自,系列共有九篇,本文译自第一篇。,一种新的容器化技术,因为轻量级和便携化而受到广泛关注。本篇文章是系列教程的第一篇。镜像只读的容器模板,简言之就是系统镜像文件。首先,向发出请求创建一个镜像并且指定容器内要运行的命令。 本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第一篇 Part 1: An Introduction。...

    yacheng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<