在 Mac OS X 上安裝紅帽容器開發工具包

oschina發表於2015-05-24

容器技術很棒,它將會改變我們開發好傳遞軟體的方式。當然也有一個批評此技術的人認為它並不安全和足夠安全的在產品環境執行。

隨著 Red Hat Enterprise Linux 7.1 和 Red Hat Atomic 的登陸,企業和組織機構可以不用犧牲安全性和效能,也能擁抱這一新技術趨勢。

什麼 Red Hat CDK?

CDK 是 Container Development Kit(容器開發包)的縮寫,它能讓開發者在他們的桌面系統上使用 Red Hat Atomic,不管他們所使用的是 Microsoft Windows®,Mac OS X® 或者其他 Linux 的發行版。同boot2docker類似,CDK利用虛擬機器來啟動一個小的主機,它能執行基於 Red Hat Enterprise Linux 的容器。

前置條件

  • Red Hat 訂閱 – 要安裝 Red Hat CDK 你就得擁有一個啟用了的 Red Hat Enterprise Linux 訂閱, 如果沒有,可以在 這裡 進行申請和檢視。
  • 虛擬環境 – VirtualBox (Mac/Windows) 或者 virt-manager (Linux)
  • Vagrant – 用來建立和管理虛擬環境。

從 Red Hat 消費者門戶 下載下面這些東西。

  1. Red Hat 容器工具(Container Tools)
  2. 面向 VirtualBox  的 Red Hat Atomic Vagrant 盒子 或者 面向libvirt 的 Red Hat Atomic Vagrant 盒子。

安裝 Red Hat 容器開發包

注意:在這之前你需要安裝好虛擬化環境以及 Vagrant

解壓你下載的 cdk.zip 檔案到主目錄. 這樣會建立 ~/cdk (/Users/username/cdk)

$ unzip -d $HOME ~/Downloads/cdk-1.0-0.zip

安裝使用 Red Hat Vagrant 所需要的 Vagrant 外掛. 第一個外掛會花幾分鐘時間,Vagrant 可能會需要安裝一些額外的gem檔案。

$ cd ~/cdk/plugins
$ vagrant plugin install vagrant-registration-0.0.8.gem
$ vagrant plugin install vagrant-atomic-0.0.3.gem

驗證外掛是否已經安裝好了:

$ vagrant plugin list
vagrant-atomic (0.0.3)
  - Version Constraint: 0.0.3
vagrant-registration (0.0.8)
 - Version Constraint: 0.0.8

將 RHEL Atomic 盒子新增到 Vagrant:

$ vagrant box add --name rhel-atomic-7 ~/Downloads/rhel-atomic-virtualbox-7.1-0.x86_64.box

啟動 Atomic 主機

為 docker 檔案建立一個工作目錄

$ mkdir ~/containers && cd ~/containers

為容器建立一個工作目錄,並初始化 vagrant

$ mkdir containers && cd containers
$ vagrant init -m
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

這一步會建立一個簡單的 Vagrant 檔案。開啟它並像下面這樣修改配置:

Vagrant.configure(2) do |config|
  config.vm.box = "rhel-atomic-7"
  config.vm.hostname = "rhel-atomic-7-docker-host"

  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
    vb.memory = 4096
  end

  config.vm.provision "shell", inline: <<-SHELL
    sudo systemctl stop docker > /dev/null 2>&1
    sudo groupadd docker > /dev/null 2>&1
    sudo usermod -a -G docker vagrant
    sudo systemctl enable docker && sudo systemctl start docker
    sudo chown root:docker /var/run/docker.sock
    sudo systemctl enable docker && sudo systemctl start docker
  SHELL
end

我們現在已經做好了啟動容器的準備。在機器的建立過程中,你將會看到是否想要註冊系統的提示。回答 “Y” 就會要你輸入RHN (Red Hat Network) 賬戶的使用者名稱和密碼.

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'rhel-atomic-7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: containers_default_1432213616739_95846
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default: 
    default: This is not an error message; everything may continue to work properly,
    default: in which case you may ignore this message.
==> default: Setting hostname...
==> default: Registering box with vagrant-registration...
    default: Would you like to register the system now (default: yes)? [y|n] y
    default: Subscriber username: <your-rhn-username>
    default: Subscriber password: <password>==> default: Rsyncing folder: /Users/tqvarnst/containers/ => /home/vagrant/sync
==> default: Running provisioner: shell...
    default: Running: inline script

測試你的安裝

$ vagrant ssh
[vagrant@rhel-atomic-7-docker-host ~]$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[vagrant@rhel-atomic-7-docker-host ~]$ docker run -it rhel7.1 bash
Unable to find image 'rhel7.1:latest' locally
Pulling repository registry.access.redhat.com/rhel7.1
10acc31def5d: Download complete 
Status: Downloaded newer image for registry.access.redhat.com/rhel7.1:latest
[root@ead3774c2b84 /]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.1 (Maipo)
[root@ead3774c2b84 /]#

按下 CTRL-P + CTRL-Q 可以離開你的容器

[vagrant@rhel-atomic-7-docker-host ~]$ docker ps
CONTAINER ID        IMAGE                                      COMMAND             CREATED              STATUS              PORTS               NAMES
ead3774c2b84        registry.access.redhat.com/rhel7.1:7.1-4   "bash"              About a minute ago   Up About a minute                       focused_rosalind

如下命令可以停掉或者刪除容器

[vagrant@rhel-atomic-7-docker-host ~]$ docker stop $(docker ps -q)
ead3774c2b84
[vagrant@rhel-atomic-7-docker-host ~]$ docker rm $(docker ps -aq)
ead3774c2b84

總結

通過這個指南,你就可以有一個可以來使用基於 Red Hat Enterprise Linux 7.1 的容器的工作環境,不管你使用的是 Mac OS X®,Microsoft Windows® 還是其它的Linux發行版。

鳴謝

特別要感謝 Pete Muir 在Vagrant設定上給我帶來的支援和幫助。

相關文章