Docker Docker當做虛擬機器使用

2021-10-24 18:56:50 字數 4029 閱讀 8127

容器其實是一種沙盒技術。顧名思義,沙盒就是能夠像乙個貨櫃一樣,把你的應用"裝"起來的技術。這樣,應用與應用之間,就因為有了邊界而不至於相互干擾;而被裝進貨櫃的應用,也可以被方便地搬來搬去,這其實是 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 中提交變更 我們先建立乙個容器,然後在容器裡做出修改,最後將修改提交為乙個新映象 首先,在乙個基礎映象上建立乙個容...