在 Ubuntu 中用 Docker 管理 Linux Container 容器
當前,完全硬體虛擬化技術(KVM、Xen、Hyper-V 等)能在一個物理主機上很好地執行多個互相獨立的作業系統,但這也帶來一些問題:效能不佳,資源浪費,系統反應遲緩等。有時候對使用者來說,完全的硬體虛擬化並不是最好的選擇。
一種替代方案是使用輕量級虛擬化技術 —— 所謂的 LinuX Container 容器 (LXC),它提供的是系統級虛擬化。與跑虛擬機器相比,LXC 可以在一個輕量級沙箱容器裡面跑多個 Linux 作業系統。當你需要設定一些易於克隆的開發環境、測試環境,或想在安全沙盒裡安裝應用時,LXC 就非常有用了。
Docker 是一個開源工具,可以讓使用者方便地佈署 Linux Container 容器。Docker 很快變成了 container 技術的非官方標準,從而被 Ubuntu 和 Red Hat等眾多發行版吸收進去。
本教程中我會向你們演示如何在 Ubuntu 14.04 中使用 Docker 來管理 LXC。需要注意的是,本教程的一些內容可能會與其他 Ubuntu 版本下的操作會稍微有些出入。
當前Ubuntu 系統下的 Docker 的安裝包只提供64位。如果你想執行32位的 Docker,你需要使用原始碼編譯32位 Docker 工具。
安裝 Docker
透過 apt-get 安裝 Docker 簡直是小菜一碟。
$ sudo apt-get install docker.io
如果你不是 root 組的使用者,你可以把自己加入到 docker 使用者組。下面的命令可以讓沒有 root 許可權的使用者使用 Docker:
$ sudo usermod -a -G docker $USER
重新登入,以便讓你的使用者組許可權生效。
下一步是編輯 Docker 配置檔案,確定 Docker 可執行檔案的路徑:
$ sudo vi /etc/default/docker.io
DOCKER="/usr/bin/docker.io"
重啟 Docker 服務:
$ sudo service docker.io restart
管理 Docker Container 容器
如果你想在新的 Docker 容器下建立一個新的 Ubuntu 作業系統,你首先需要 pull 一個 Ubuntu 的 Docker 映象。下面的命令可以透過網路下載 Docker 映象:
$ docker pull ubuntu
你可以使用下面的命令啟動 Docker 裡面的 Ubuntu 系統。最後的引數“/bin/bash”表示一旦容器啟動,首先會執行簡單的 bash。
$ docker run -i -t ubuntu /bin/bash
上面的命令會立即啟動 Ubuntu container 容器(這是一個完美的容器!),然後它會提供一個 shell 提示符執行環境給你。現在開始你可以透過這個沙箱環境訪問一個完整的 Ubuntu 系統了。
輸入“exit”命令退出 Docker 容器。
你也可以用下面的命令進入不同的系統。比如 Fedora:
$ docker.io run -i -t fedora /bin/bash
如果系統中還不存在 Fedora Docker 映象,這個命令會自動下載它,然後啟動這個 Fedora 的 Docker 容器。
如果你想要開啟指定版本的系統,比如 Ubuntu 13.04,你可以使用下面的命令:
$ docker.io run -i -t ubuntu:13.04 /bin/bash
Container 容器網路設定
Docker 使用 Linux 橋接技術與其他容器通訊,以及連通外網。安裝完 Docker 後你應該可以看到 docker0 這個網橋,這是 Docker 預設建立的。你建立的每個容器都會透過這個網橋連線到網路。
自定義 Linux 網橋
如果你想自定義網橋,你可以執行以下步驟。你可以在這個網橋後面分配一個子網,併為這個子網分配地址。下面的命令會為 Docker 子網分配 10.0.0.0/24 地址段:
$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0
$ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0
然後在 /etc/default/docker.io 檔案的 DOCKER_OPTS 變數裡新增“-b=br0”選項,並重啟 Docker 服務:
$ sudo service docker.io restart
到目前為止,任何建立的容器都會連上 br0 網橋,它們的 IP 地址會從 10.0.0.0/24 中自動分配(譯註:在10.0.0.2到10.0.0.254之間隨機分配)。
其他自定義設定
你可以透過 /etc/default/docker.io 檔案的 DOCKER_OPTS 變數設定其他一些屬性:
- "-dns 8.8.8.8 -dns 8.8.4.4": 為容器指定 DNS 伺服器。
- "-icc=false": 將容器與其他容器隔離出來
疑難解答
1、當你執行 docker.io 命令時,你可能會遇到以下問題:
dial unix /var/run/docker.sock: no such file or directory
這個錯誤可能是由於 Docker 後臺程式沒有啟動。檢查下 Docker 後臺程式的狀態,確認它已經處於啟動狀態:
$ sudo service docker.io status $ sudo service docker.io start
via: http://xmodulo.com/2014/05/manage-linux-containers-docker-ubuntu.html
相關文章
- 在Docker容器環境中用Let's Encrypt部署HTTPSDockerHTTP
- [Docker]在Ubuntu容器中建立sudo使用者DockerUbuntu
- 在Linux中,如何使用Docker和Kubernetes管理容器?LinuxDocker
- 在 Ubuntu 中用 UFW 配置防火牆Ubuntu防火牆
- Docker的容器管理Docker
- Docker 容器管理:rancherDocker
- Windows Server 2019 container容器化-Docker安裝WindowsServerAIDocker
- 【Docker】第三篇 Docker容器管理Docker
- 在ubuntu中用apt-get安裝LEMP棧(linux+nginx+mysql+php)Ubuntuapt-getLinuxNginxMySqlPHP
- docker之containerDockerAI
- Docker筆記(六):容器管理Docker筆記
- 常用的 Docker 容器管理命令Docker
- 如何在Docker容器中的Linux系統(Ubuntu + Centos Linux)裡面使用systemctlDockerLinuxUbuntuCentOS
- 在Linux 中用chkconfig輕鬆管理啟動程式(轉)Linux
- 淺析linux容器--DockerLinuxDocker
- Linux 提權-Docker 容器LinuxDocker
- 教你在 Ubuntu 上使用 LXC 容器Ubuntu
- Container容器元件的使用AI元件
- 在Linux中,Docker和容器虛擬概念是什麼?LinuxDocker
- Dockly:從終端管理 Docker 容器Docker
- 【實戰】Docker容器資源管理Docker
- 在 Linux 中用Seahorse管理你的密碼和加密金鑰Linux密碼加密
- 在Ubuntu中安裝Docker和docker的使用UbuntuDocker
- 【Docker快速入門】在Ubuntu下安裝DockerDockerUbuntu
- Swift SB 容器 Container View使用SwiftAIView
- 【譯】容器元件 (Container Components)元件AI
- 實踐:Docker容器與映象管理Docker
- docker Portainer 作為容器的 GUI 管理DockerAIGUI
- Docker容器日誌管理最佳實踐Docker
- 使用 Docker Compose 管理多個容器Docker
- Docker 與 Podman 容器管理的比較Docker
- 8 個基本的 Docker 容器管理命令Docker
- 在Linux中用chattr和lsattr命令管理檔案和目錄屬性Linux
- Docker入門03——ContainerDockerAI
- 如何在Ubuntu上建立及管理LXC容器Ubuntu
- Ubuntu 中用 delphi 開發 apacheUbuntuApache
- 在 docker 容器中捕獲訊號Docker
- 在docker容器中部署Web專案DockerWeb