内容简介:与传统的虚拟机相比拥有以下优势:
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 [<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 param2Shell模式
-
-
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 <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
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》 这本书的介绍吧!