返回介绍

容器技术

发布于 2025-01-19 23:59:32 字数 3451 浏览 0 评论 0 收藏 0

容器技术与 Docker

微服务 一起火起来的,还有容器技术。通过容器技术,应用程序可以和环境打包在一个包中,然后运行在任何支持容器的操作系统中,容器隔离了所有的物理层。这使得人们非常轻量级地、安全可靠地发布软件包(包含了应用程序和运行时环境)。

传统意义上,人们在持续发布流水线上编译,测试,构建出一个软件包,然后再自动化配置一套环境,再将软件部署其上。现在人们可以很容易的为流水线添加一个新的 job,使其构建出一个独立的容器。这个容器可以直接运行在像 AWS 这样的云提供商的机器上。

Docker 是目前最为流行的容器技术,它可以运行在主流的 Linux 主机上(内核版本 3.10 以上)。通过 Docker Toolbox,你还可以在 Mac 下,甚至 Windows 上运行 Docker(当然,只是 Docker 的客户端,但是即使这样也可以获得 Docker 带来的好处)。

如果你在 Mac 下工作(如果在 Linux 下工作,按照官方的指导即可,如果在 Windows 下工作,那我建议你还是换成 Linux 或者 Mac 吧),可以安装 Docker Toolbox 来使用 Docker。 Docker Toolbox 中包含了一组工具,包括:

  • docker-machine 应用程序
  • docker-compose 应用程序
  • Kitematic,docker 的图形化客户端
  • VirtualBox
  • 一个包含了 Docker 所需配置的 shell 环境

概念

事实上,我们通常说的 Docker 分为三个部分:

  • docker daemon(只能运行在 Linux 下,使用了 Linux 的一些内核特性)
  • docker client(客户端程序,可以运行在 Linux/Mac/Windows 下)
  • container(容器,包含了应用程序和其依赖的环境)

在 Linux 环境中,这三者都在同一个环境中:

docker linux

而在 Mac 和 Windows 中,docker client 运行在宿主环境中,docker daemon 和 container 都在一个 Linux 的虚拟机中:

docker mac

docker-machine

docker-machine 可以用来创建和管理 Linux 虚拟机,这些 Linux 虚拟机具备了运行 Docker Daemon 的条件。宿主操作系统的客户端可以连接到该 Linux 虚拟机。

你可以使用下面的命令来创建一个虚拟机:

$ docker-machine create --driver virtualbox myvm

使用:

$ docker-machine ls

来查看已经运行的 docker 虚拟机:

$ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
dev             virtualbox   Running   tcp://192.168.99.100:2376

可以看到,我本地有一台名为 dev 的虚拟机,状态为 运行中 。如果这个机器没有启动(STATE 状态部位 Running),你可以通过:

$ docker-machine start dev

来启动它。启动之后,你可以使用 env 子命令来查看机器的配置

$ docker-machine env dev
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/jtqiu/.docker/machine/machines/dev"
export DOCKER_MACHINE_NAME="dev"
# Run this command to configure your shell: 
# eval "$(docker-machine env dev)"

事实上,你可以创建多个 docker 虚拟机,因此在你的 shell 中执行下列命令来设置环境变量:

eval "$(docker-machine env dev)"

这样,你本地的环境变量如 DOCKER_HOSTDOCKER_MACHINE_NAME 等就会被设置为虚拟机 dev 对应的值,后续的所有 docker 客户端命令就会在该机器上生效。

启动了 docker 虚拟机之后,你就可以使用 docker 客户端程序来启动 container 了

$ docker run -d -P --name web nginx

这条命令会使用 nginx 这个 docker image 来启动一个容器,容器的名字叫 web 。默认的 docker 在执行完命令之后会退出, -d 选项使其进入后台服务模式,即不退出。 -P 选项会将容器中的端口暴露给宿主环境。

如果你本地没有 nginx 镜像,docker 会尝试从远程的中心仓库下载该镜像,最后启动:

$ docker run -d -P --name web nginx
Unable to find image 'nginx:latest' locally
Pulling repository docker.io/library/nginx
c0e6aba9c87a: Pulling dependent layers 
...

启动之后,你就可以通过 DOCKER_HOST 对应机器的 80 端口来访问该 nginx 实例了:

nginx

docker-compose

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文