容器其實是一種沙盒技術。顧名思義,沙盒就是能夠像乙個貨櫃一樣,把你的應用"裝"起來的技術。這樣,應用與應用之間,就因為有了邊界而不至於相互干擾;而被裝進貨櫃的應用,也可以被方便地搬來搬去,這其實是 paas 最理想的狀態。容器的本質是程序,容器就是未來雲計算系統中的程序。
雲計算服務型別
基礎設施即服務iaas
平台即服務(paas)
軟體即服務(saas)
1、docker原生容器基礎命令ip a 、ss、ssh、等沒有
2、docker原生容器systemctl命令沒有
3、docker啟動命令太長,不好記
用dockerfile構建映象,先把能想到的基礎命令需要的包安裝一下,解決問題1,用特權模式構建容器,解決問題2,docker啟動命令用alias設定別名,解決問題3。做完上面的步驟,恭喜你,虛擬機器任你開,全程**
1、先利用dockerfile構建自定義的基礎映象
[root@sun ~]
# cd /mnt
[root@sun mnt]
# mkdir centos7
[root@sun mnt]
# cd centos7/
[root@sun centos7]
# vim dockerfile
[root@sun centos7]
# cat dockerfile
from centos:7
run yum install -y \
vim bash-com* openssh-clients openssh-server iproute cronie;\
yum group install -y "development tools"
;yum clean all;\
localedef -c -f utf-8 -i zh_cn zh_cn.utf-8 && \
ln -sf /usr/share/zoneinfo/asia/shanghai /etc/localtime
env lang=zh_cn.utf-8
構建自定義的docker映象,名字自定義
[root@sun centos7]
# docker build . -t base-centos
出現下面語句,表示構建成功
successfully built 325f14a33587
successfully tagged base-centos:latest
[root@sun centos7]
# docker images
repository tag image id created size
base-centos latest 325f14a33587 3 minutes ago 522mb
sunlizhen-ng latest 380f3ce262e9 4 days ago 843mb
centos 7 7e6257c9f8d8 2 months ago 203mb
hello-world latest bf756fb1ae65 9 months ago 13.3kb
可以看到base-centos基礎映象已經在我們的自己的映象倉庫裡面
現在已經擁有了乙個支援基本命令和支援中文的映象了。
2、以特權模式進入可以使用systemctl命令
docker run -it --name mydocker1 --rm --privileged=true base-centos /usr/sbin/init
–name 容器命名
–rm 退出自動刪除容器
–privileged 特權模式
/usr/sbin/init 系統的1號程序命令
遇到的乙個問題,可能是我的系統環境問題:
docker run -it --name mydocker1 --rm --privileged=true base-centos /usr/sbin/init
執行這一條命令之後,導致我centos7真機系統重啟
個人水平有限解決不了,不知道什麼原因,只能換一種方式
先後臺執行docker,然後與exec進入
docker run -itd --name mydocker1 --rm --privileged=true base-centos /usr/sbin/init
docker exec -it mydocker1 bash
3、啟動docker命令、引數太長。設定命令別名
首先說明:個人習慣在構建容器的時候給容器起乙個便於記憶和區別的名字,好處是便於管理。所以在設定別名的時候設定乙個位置變數$1,用作容器命名。
[root@sun ~]
# vim /etc/profile.d/docker.sh
function mydocker(
)alias ops=
'mydocker'
[root@sun ~]
# source /etc/profile.d/docker.sh
測試示例:
如果還想更改容器主機名加乙個–hostname引數
[root@sun ~]
# vim /etc/profile.d/docker.sh
function mydocker(
)alias ops=
'mydocker'
[root@sun ~]
# source /etc/profile.d/docker.sh
也就是執行命令的話需要傳遞兩個位置變數
容器名稱和容器主機名稱
測試示例
至此,可以很簡單擁有一台新的虛擬機器
[root@sun ~]
# vim /etc/profile.d/docker.sh
function mydocker(
)alias ops=
'mydocker'
[root@sun ~]
# source /etc/profile.d/docker.sh
使用場景:在乙個容器裡安裝了mysql等服務,想再次構建乙個容器裡面同樣有mysql等服務
可以先將當前容器匯出為乙個任意命名的壓縮包:
docker export 容器名/id > centos7-mysql.tar
然後拷貝壓縮包給需要的伺服器,本機需要就直接匯入
將容器壓縮包匯入為本地映象
docker import centos7-mysql.tar
注意,import命令是將容器快照匯入為的映象
docker images
需要重新定義映象標籤
docker tag 映象id centos:7
tag加的映象id,給新import的映象加上倉庫名和標籤,重複操作不會覆蓋,會新建
(docker tag centos:7 sun:8)
docker run -it --rm sunlizhen bash 自己匯入的映象,run後面需要跟乙個命令
docker docker開源專案
最早接觸docker是在14年年初,當初docker遠沒有這在這麼火,當時覺得docker也就是類似openstack cloudstack的乙個容器管理,沒什麼特別,沒想到啊,半年的時間裡,發生了如此翻天覆地的變化 vmware與docker合作 rhel 7整合docker cloudfoudr...
docker docker入門理論
這篇文章先大概為大家介紹一下docker的理論知識,方便後續研讀與開發。docker簡單來理解是一種容器技術,是基於go語言實現的開源容器專案。docker提供了搞笑 便捷和輕量級的容器方案,支援多種主流雲平台的的部署。這裡的元件既可以是 乙個web應用 乙個編譯環境,也可以是一套資料庫平台服務。1...
Docker Docker構建映象
本文總結自 第一本docker書 修訂版 james turnbull 建立docker映象的第一種方法是使用docker commit命令,可以將此想象為我們往版本控制系統 如git 中提交變更 我們先建立乙個容器,然後在容器裡做出修改,最後將修改提交為乙個新映象 首先,在乙個基礎映象上建立乙個容...