摘要:由于支持在镜像的基础上进行定制,使得扩展变得更简单。而官方也维护了一大批高质量的镜像,大大降低了镜像的制作成本基本概念仓库提供了仓库用于存放制作好的镜像,方便使用者获取,在本地可通知配置多个。
Docker 是使用 GoLang 开发的开源容器引擎,可以方便的打包开发好的应用,然后分发到任意 linux 主机上。
与传统的虚拟机相比拥有以下优势:
高效的系统资源利用率
由于不需要进行硬件虚拟和运行完整的操作系统等额外开销,无论是应用执行速度、内存损耗或者文件存储速度, Docker 都更加高效
更快的启动速度
Docker 容器应用直接运行与宿主内核,无需启动完整的操作系统,可以做到秒级启动
一致的运行环境
Docker 镜像提供了除内核外的完整运行环境,确保了应用运行环境的一致性
持续交付和部署
可以通过 Docker 镜像来实现服务的持续交付、部署。使用 Dockerfile 来构建镜像,使用持续集成系统进行集成测试;使用镜像结合持续部署系统进行自动部署
迁移轻松
只需要迁移镜像及镜像运行的数据就可在其他主机或平台运行
易于维护和扩展
由于使用镜像进行部署,使维护更为容易。由于支持在镜像的基础上进行定制,使得扩展变得更简单。而官方也维护了一大批高质量的镜像,大大降低了镜像的制作成本
基本概念 仓库Docker 提供了仓库(Repository)用于存放制作好的镜像,方便使用者获取,在本地可通知配置多个 Repository 。
拉取
可以使用命令来拉取镜像:
docker pull [repo url>/]image name>
默认的 repo url 是 hub.docker.com ,拉取默认仓库中的镜像时是不需要 url 的。
如拉取 debian : docker 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
有 Exec 和 Shell 两种模式
通常使用这个命令来指定镜像的启动命令,因为 CMD 稍不注意就被覆盖了
更多关于 Dockerfile 内容请参见: Dockerfile reference
这里给出一个简单的 Dockerfile=, 是 =debian sid 的:
FROM scratch ADD rootfs.tar.xz / CMD ["bash"]创建
使用 docker build -f
Tag 可用来标记不同的镜像版本,就像版本号。
列出使用 docker image ls 可以列出下载下来的镜像
运行使用 docker run 命令运行镜像,可使用参数配置,下面给出一个例子:
docker run -it -d -p
-i 是交互式操作
-t 是终端
-p 指定端口映射
-v 指定 volume 映射
-d 后台模式
删除使用 docker image rm
导出: docker save
导入: docker load <
容器是镜像运行后的实体,运行与属于自己的独立的命名空间。
创建使用 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
导入: docker import
导出: docker export
直接运行镜像不便于部署服务,因而官方推出了 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是一款由DotCloud公司(现改名为Docker)基于Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发...
摘要:概述是一个用来定义和运行复杂应用的工具。使用,用户通过来进行构建。使用,不再需要使用脚本来启动容器。在配置文件中,所有的容器通过来定义,然后通过脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。 概述 Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成...
摘要:概述是一个用来定义和运行复杂应用的工具。使用,用户通过来进行构建。使用,不再需要使用脚本来启动容器。在配置文件中,所有的容器通过来定义,然后通过脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。 概述 Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成...
摘要:本系列教程翻译自,系列共有九篇,本文译自第一篇。,一种新的容器化技术,因为轻量级和便携化而受到广泛关注。本篇文章是系列教程的第一篇。镜像只读的容器模板,简言之就是系统镜像文件。首先,向发出请求创建一个镜像并且指定容器内要运行的命令。 本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第一篇 Part 1: An Introduction。...
摘要:本系列教程翻译自,系列共有九篇,本文译自第一篇。,一种新的容器化技术,因为轻量级和便携化而受到广泛关注。本篇文章是系列教程的第一篇。镜像只读的容器模板,简言之就是系统镜像文件。首先,向发出请求创建一个镜像并且指定容器内要运行的命令。 本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第一篇 Part 1: An Introduction。...
摘要:前置条件这不是一个入门课程。此课程为至少有六个月网站开发经验的高级入门者设置。主题资源目标这部分结束,具备以下能力。。。第一部分完整代码依赖第一部分依赖耗时一章需要几个小时到一整天。空余大块时间来完成一章,特别是,,这些较难的部分。 在第一部分, 你学到如何使用 Docker 来创建一个基于python, postgres, 和 flask web 框架的 RESTful API 可重...
阅读 916·2021-09-07 09:58
阅读 1447·2021-09-07 09:58
阅读 2847·2021-09-04 16:40
阅读 2477·2019-08-30 15:55
阅读 2386·2019-08-30 15:54
阅读 1344·2019-08-30 15:52
阅读 386·2019-08-30 10:49
阅读 2577·2019-08-29 13:21