一、什么是Docker
Docker 是一个开源的应用容器引擎,基于Go语言编写并遵从Apache2.0协议的开源项目。官方对 Docker 的定义是一个容器平台。简单来说,Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。开发人员可以利用 Docker 来消除协作编码时 “在我的电脑上可以正常工作” 的问题。
Docker:高速创新的企业容器平台Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
Docker是开发人员和系统管理员 使用容器开发,部署和运行应用程序的平台。使用Linux容器部署应用程序称为容器化。容器不是新的,但它们用于轻松部署应用程序。
容器基本特性:
灵活:即使是最复杂的应用也可以集装箱化。
轻量级:容器利用并共享主机内核。
可互换:您可以即时部署更新和升级。
便携式:您可以在本地构建,部署到云,并在任何地方运行。
可扩展:您可以增加并自动分发容器副本。
可堆叠:您可以垂直和即时堆叠服务。
二、为什么使用Docker
Docker企业容器平台通过减少支持现有应用程序组合的基础设施和维护成本,同时加快新解决方案的上市时间,为您的业务带来即时价值。
Docker:高速创新的企业容器平台三、Docker引擎
Docker Engine是一个客户端 - 服务器应用程序,包含以下主要组件:
服务器,是一种长时间运行的程序,称为守护程序进程(dockerd命令)。
一个REST API,它指定程序可以用来与守护进程通信并指示它做什么的接口。
命令行界面(CLI)客户端(docker命令)。
Docker:高速创新的企业容器平台四、Docker架构
Docker使用客户端 - 服务器架构。Docker客户端与Docker守护进程通信,后者负责构建,运行和分发Docker容器。Docker客户端和守护程序可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序使用REST API,通过UNIX套接字或网络接口进行通信。
Docker:高速创新的企业容器平台五、核心概念
Docker 镜像
(Images)
Docker镜像是用于创建Docker容器的模板。
Docker 容器
(Container)
容器是基于镜像创建出来而独立运行的一个或一组应用。
Docker 客户端
(Client)
Docker客户端通过命令行或者其他工具使用Docker
API与Docker的守护进程通信。
Docker 主机
(Host)
一个物理或者虚拟的机器用于执行Docker守护进程和容器。
Docker 仓库
(Registry)
Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。
Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
六、安装与部署
Docker安装非常简单,支持各种平台。请到官网自行安装下载Docker。
安装完成后,查看Docker版本:
$ docker version
Docker version 18.09.2, build 6247962
七、常用命令
最新可用命令,可以通过help查看:
$ docker --help
要使用特定命令的选项,可以使用该命令的help选项。
$ docker COMMAND --help
例如,要使用docker run命令选项,可以使用以下命令:
$ docker run --help
目前,有15个管理命令和40个通用命令。下面是我们常用的docker命令:
1 docker attach-将本地输入/输出/错误流附加到正在运行的容器。
2 docker build-使用Dockerfile创建镜像。
3 docker commit-从容器的当前更改状态创建一个新镜像。
4 docker exec-在正在运行的容器中运行命令。
5 docker export-将容器导出为tar归档文件。
6 docker history-显示镜像的历史记录。
7 docker import-将tar归档文件导入为镜像。
8 docker images-显示镜像列表
9 docker info-显示系统信息,包括镜像和容器数。
10 docker inspect-查找有关Docker容器和镜像的系统级信息。
11 docker login-登录到本地注册表或Docker Hub。
12 docker logs-输出容器运行的日志。
13 docker pull-从本地注册表或Docker Hub中提取镜像或存储库。
14 docker ps-列出容器的各种属性。
15 docker restart-停止并启动容器。
16 docker rm-移除容器。
17 docker rmi-删除镜像。
18 docker run-在一个独立的容器中运行一个命令。
19 docker search-在Docker Hub中搜索镜像。
20 docker start-启动已经停止的容器。
21 docker stop-停止运行容器。
22 docker version -提供Docker版本信息
八、最佳实践
1、Docker Hello World
Docker允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序,输出Hello world,如下所示:
$ docker run alpine:latest /bin/echo "Hello world"
Hello world
各个参数解析:
docker: Docker 的二进制执行文件。
run:与前面的 docker 组合来运行一个容器。
alpine指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 alpine 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
2、Docker运行一个web应用
我们采用Dockerfile来构建应用,准备工作如下:
$ ls
Dockerfile web web.go
Step1: Dockerfile内容如下所示:
$ cat Dockerfile
# Use an ubuntu image
FROM ubuntu:14.04
# Make port 80 available to the world outside this container
EXPOSE 80
ADD web /root/
ENTRYPOINT [ "/root/web" ]
Step2: web应用程序本身,如下所示:
$ cat web.go
package main
import (
"fmt"
"net/http"
)
func home(w http.ResponseWriter, h *http.Request) {
w.Write([]byte("Hello Web Server!!!"))
}
func main() {
http.HandleFunc("/", home)
err := http.ListenAndServe(":80", nil)
if err != nil {
fmt.Println("服务启动失败。")
}
}
Step3: 编译web应用,生成web可执行程序,如下所示:
$ ls
Dockerfile web.go
$ go build -o web web.go
$ ls
Dockerfile web web.go
Step4: 构建Docker镜像,如下所示:
$ docker build --tag=hellowebserver .
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hellowebserver latest 6776d291ea78 24 seconds ago 196MB
Step5: 运行应用程序
运行应用程序,使用以下方法将计算机的端口54000映射到容器的已发布端口80,如下所示:
$ docker run -p 54000:80 hellowebserver
在Web浏览器中转到该URL以查看在网页上提供的显示内容。
Docker:高速创新的企业容器平台九、结束语
希望这个文章能让您熟练掌握Docker命令,并在工作中能够对您有所帮助!只要你我都用心去奋斗,去努力,美好的未来在等着我们!
Docker:高速创新的企业容器平台
网友评论