Docker Runs on Windows Server 2016

最近容器技术大行其道,两年以来发展势头十分迅猛,国内也开始兴起了以Docker为主的Caas服务厂商。微软自从转型依赖,一直以拥抱开源的姿态迎接新事物,这次微软决定在 Windows Server 2016 中加入对Docker的支持。

今天8月份,微软发布了三个Windows Server 2016的第三个预览版,其中最后一个预览版中加入了对Docker的支持。对于Windows开发者来说,这是很有纪念意义的一件事情。这个项目由微软和Docker的技术团队共同合作完成, 据说这是微软 Windows 团队基础团队第一次为开源项目贡献代码。

微软发布了Windows Server的Docker Engine(也叫做Windows daemon)的预览版,供大家下载和测试。Windows Server 2016 Technical Preview 3(TP3)以及WindowsServer Docker Engine的发布,也意味着将有更多的开发者加入到Docker社区中来,编译新的软件并向Docker贡献代码。

Dockerdaemon for Windows Server

许多人并没有意识到在Windows Server上运行Docker意味着什么。以下几点可以帮助你理解这个过程和技术详情:
1.Windows Server Docker Engine并不是分支,也不是另外一个项目,Linux和Windows的Docker Engine基于同一个基础代码库;

2.Windows Server Docker 的预览版,在特性上还不完备, 大多数我们熟知的 Docker 命令行都可以在 Windows Server 上正常运行 。比如,你可以写一个 Dockerfile ,然后像在 Linux 上一样运行 docker build 编译出来;

3.Windows Server 的 Docker daemon 不能运行 Linux 下的 Docker 镜像!虚拟化技术并没有参与其中,跟 Linux 下的原理一样, Windows Server 容器重用了宿主机的内核,为进程创建了一个沙盒环境。

这意味着,对于运行的进程来说,Docker变成了一个跨平台的接口。例如,通过统一的接口,Linux和Windows Server的主机集群可以通过Docker Swarm被混合编排,还可以实用同一个Docker CLI和Docker命令行。无需学习新的命令,开发者们又有了更多的选择。

Container runtime和内核依赖

大家都知道Docker基于Linux内核特性(namespace和cgroups)。同样的,微软也在Windows内核中添加了container的特性,从而用户的代码可以被运行在沙盒环境的进程中。这些特性只在刚刚发布的Windows Server 2016预览版中可以看到。

在Docker的基础代码库中,执行容器运行的部分是execdriver,在Linux下的默认继承是libcontainer,不久后会基于runC。微软团队在这个架构中集成了一个Windows专用的execdriver,不久就会像Linux一样,加入到内核代码中。

持续集成

对于任何需要长期维护的软件来说,持续集成都是一个很重要的工作。实际上,大多数Linux的contributor并没有环境和时间,去确认自己的代码包会不会打断Windows那边的build工作。

为保证Windows Server那边的工作是一个持续的过程,首先要保证编译能顺利通过。CI保证了微软团队提交的代码,不会被其他contributor的代码影响。

现在就可以马上下载试用Windows Server Docker了,由于是预览版,还有一些限制,比如不支持docker push命令行。

1)Windows Server 2016 Preview download page:

http://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-technical-preview?i=1

2)Community Resources(社区资源)

https://msdn.microsoft.com/virtualization/community/community_overview

3)Discuss

https://social.msdn.microsoft.com/Forums/en-US/home?forum=windowscontainers

4)News

http://www.tuicool.com/articles/QbMFjaI

部署 Git 服务可以通过 Docker 快速实现,常见的 Git 服务包括 Gitolite、Gitea、GitLab 等。以下将分别介绍如何使用 Docker 部署这些服务,并提供基本的配置步骤。 ### 使用 Docker 部署 Gitea Gitea 是一个轻量级的自托管 Git 服务,非常适合用于小型团队或个人使用。以下是使用 Docker 部署 Gitea 的步骤: #### 1. 创建 `docker-compose.yml` 文件 ```yaml version: "3" networks: gitea: external: false services: server: image: gitea/gitea:latest container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 restart: always networks: - gitea volumes: - ./gitea:/data/gitea - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "2222:22" ``` #### 2. 启动服务 使用以下命令启动 Gitea 容器: ```bash docker-compose up -d ``` #### 3. 访问 Gitea 并进行初始配置 打开浏览器访问 `http://<your-server-ip>:3000`,进入 Gitea 安装页面。根据提示进行数据库配置、管理员账户设置等操作。 ### 使用 Docker 部署 GitLab GitLab 是一个功能强大的 DevOps 平台,支持完整的 CI/CD 流程。部署 GitLab 可以通过官方镜像完成。 #### 1. 创建 `docker-compose.yml` 文件 ```yaml version: '3.6' services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always hostname: 'gitlab.example.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.example.com' ports: - '80:80' - '443:443' - '22:22' volumes: - ./gitlab/config:/etc/gitlab - ./gitlab/logs:/var/log/gitlab - ./gitlab/data:/var/opt/gitlab ``` #### 2. 启动容器 ```bash docker-compose up -d ``` #### 3. 访问 GitLab 打开浏览器访问 `http://gitlab.example.com`(请替换为实际域名或 IP 地址),首次访问时将提示设置管理员密码。 ### 使用 Docker 部署 Gitolite Gitolite 是一个基于 SSH 的轻量级 Git 服务器管理工具。 #### 1. 使用官方镜像运行容器 ```bash docker run -d \ --name gitolite \ -p 2222:22 \ -v /your/local/repo:/home/git/repositories \ -e GITOLITE_USER=git \ -e GITOLITE_GROUP=git \ registry.gitlab.com/gitlab-org/gitlab-test-container-images/gitolite:latest ``` #### 2. 配置 SSH 访问 将客户端的公钥添加到 Gitolite 中: ```bash cat ~/.ssh/id_rsa.pub | docker exec -i gitolite gl-addkey <username> ``` ### 配置持久化存储与备份 在部署 Git 服务时,建议将数据卷挂载到宿主机目录,以便在容器更新或重建时保留数据。例如,Gitea 的数据目录 `/data/gitea` 和 GitLab 的配置目录 `/etc/gitlab` 都应持久化存储。 ### 配置自动更新与 CI/CD 集成 可以结合 GitHub Actions 或 GitLab CI 实现自动构建和部署流程。例如,在 GitHub Actions 中配置自动推送镜像[^3]。 ### 示例:GitHub Actions 自动部署 Gitea ```yaml name: Deploy Gitea on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Deploy with Docker Compose uses: azure/docker-login@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - run: | docker-compose down docker-compose pull docker-compose up -d ``` 以上配置可以根据实际需求进行调整,例如端口映射、SSL 配置、用户权限管理等。此外,建议在生产环境中启用 HTTPS 以增强安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值