前言
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。
以下命令以linux环境为准。
默认用户已经安装好docker
!注意事项
- 安装完docker需启动docker服务才能识别执行docker命令。
- 启动停止docker服务,可用service命令或者systemctl命令,这俩命令差不多。
Docker管理常用命令
1、查询已拉取镜像
1 | docker images |
2、查询已运行的容器
1 | docker ps |
3、拉取一个镜像
1 | docker pull [镜像名] #例如拉取官方的hello-world示例镜像 |
4、删除拉取的镜像
1 | docker rmi [镜像名] |
5、创建一个新的容器并运行一个命令
1 | docker run [镜像名] #使用拉取的镜像启动一个容器运行在前台 |
6、容器create/start/stop/restart 运行管理命令
1 | docker create [OPTIONS] IMAGE [COMMAND] [ARG...] #创建一个新的容器但不启动它 |
7、删除运行or未运行的容器
1 | docker rm [OPTIONS] CONTAINER [CONTAINER...] |
8、在运行的容器中执行命令
1 | docker exec [OPTIONS] CONTAINER COMMAND [ARG...] |
运行一个nginx容器实例
1、拉取nginx镜像
1 | docker pull daocloud.io/nginx |
2、显示拉取的nginx镜像信息
1 | docker images |
3、使用nginx镜像创建容器并运行,指定后台运行、映射容器的80端口到本机的8080端口
1 | docker run -d -p 8080:80 daocloud.io/nginx |
4、显示已运行的容器
1 | docker ps |
5、检测nginx容器能否正常使用,访问web服务是否正常
1 | curl http://127.0.0.1:8080 |
实例测试成功!
制作Docker镜像
1、什么是 Dockerfile?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
实例所需指令如下,更多指令详查官方文档:
FROM:定制的镜像都是基于 FROM 的镜像,下面的 daocloud.io/nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
MAINTAINER:标注创建/维护者著作信息
COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
Dockerfile:
1 | FROM daocloud.io/nginx |
2、docker build 命令
使用该命令基于 Dockerfile 文本构建镜像。
1 | docker build [OPTIONS] PATH | URL | - |
制作并运行一个nginx镜像
1、创建一个dockerImages目录用于存放自制镜像所需文件
1 | mkdir dockerImages |
2、创建测试所需页面
1 | vi helloimages.html |
3、创建Dockerfile构建文件
1 | vi Dockerfile |
4、查看准备好的所需文件
1 | ls |
5、执行build命令构建生成镜像
1 | docker build -t my/nginx:latest ./ #构建并指定镜像名为my/nginx,标签为latest |
6、查看制作好的镜像
1 | docker images |
7、创建并运行制作好的镜像
1 | docker run -d -p 8888:80 my/nginx |
8、测试能否正常访问该容器的nginx
1 | curl http://127.0.0.1:8888/helloimages.html |
9、检查helloimages.html是否放到容器内
1 | docker ps |
实例测试成功!
小结
通常,每个容器都应该专注于做好一件事情。有了docker就可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,大大简化了应用的部署、迁移,也更易于管理了。
2020年11月29日 完结