Docker容器一

容器的安裝,鏡像的管理,鏡像的制作

Docker:

Docker 是一個開源項目,誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余項目。它基于 Google 公司推出的 Go 語言實現。 項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在 GitHub 上進行維護。
Docker 自開源后受到廣泛的關注和討論,以至于 dotCloud 公司后來都改名為 Docker Inc。Redhat 已經在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產品中廣泛應用。
Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。由于使用LXC來創建和管理虛擬機不方便。
在 LXC 的基礎上 Docker 進行了進一步的封裝,就是用戶創建容器的一個工具。讓用戶不需要去關心容器的管理,使得操作更為簡便。用戶操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。

Docker容器的六種模式空間:名稱空間;用戶空間;文件系統空間;網絡空間;進程id的空間;傳輸空間

Docker 容器只是為了運行單個應用程序的。(管理方便高效)

LXC: LinuX Container  (Linux容器)

chroot,根切換;
namespaces:名稱空間
CGroups:控制組

簡單使用:
lxc-checkconfig:
檢查系統環境是否滿足容器使用要求;
lxc-create:創建lxc容器;
lxc-create -n NAME -t TEMPLATE_NAME
lxc-start:啟動容器;
lxc-start -n NAME -d

 

Docker的使用和安裝:

配置yum倉庫:

首先要配置extras源:(去官網查和本機系統所匹配的源:如系統是centos7.4然后源也必須是7.4的)

vault.centos.org (centos官網地址)

[extras]
name=extras

http://vault.centos.org/7.4.1708/extras/x86_64/

gpgcheck=0

在配置docker源地址:(可以去阿里云上去查找)

[docker]

https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/

gpgcheck=0

最后還需要配置epel源,應為docker包依賴epel源里的包。

yum install docker-ce  (安裝docker包)

配置文件:/etc/docker/daemon.json   (文件夾和文件都需要自己建立)

添加鏡像加速器:

vim /etc/docker/daemon.json

{
"registry-mirrors": [“https://registry.docker-cn.com”]
}    (添加此行)此為官網的鏡像加速器,還可以使用阿里云的鏡像加速器。

systemctl start docker.service   (啟動服務)

docker命令:

Containers:管理容器
Images:管理鏡像、映像

docker version  (查看版本信息)

docker info  (查看詳細信息;運行的容器個數;暫停的個數;鏡像個數等)

鏡像的管理:

docker  search:(搜尋官網上的docker鏡像,)例如:docker search nginx  (搜尋nginx的鏡像)

docker image  pull:(下載docker鏡像,從官網上)例如:docker pull nginx (下載搜索的nginx鏡像)

docker image list :(列出本地所有的docker鏡像)

docker image list nginx    (只列出本地nginx版本的鏡像)

docker image rm :   (刪除下載下來的本地鏡像)  例如:docker image rm nginx:1.14-alpine (鏡像+標簽)

容器的創建:(如果本地沒有鏡像文件,啟動時會自動到官網上下載)

docker create:(創建docker容器)例如:docker create -it  –name b1 busybox:latest (只是busybox需要添加-it的命令來創建)其他容器的創建:docker create –name b2 nginx

docker start:(啟動docker容器)  docker start  -i  b1  :(b1:為創建容器的自定義的名稱;-i  也只是busybox鏡像啟動的所添加的選項;啟動不成功可以通過-i -a這兩個選項來調節,)其他容器的啟動:docker start b1

docker run(直接創建運行docker容器);如果本地沒人鏡像文件docker會自動去官網上查詢并下載。

例1 :docker run –name b1 -it busybox:latest  (b1為自定義的容器名稱;-it 為開啟交互式界面,既打開容器的界面,busybox:latest :為打開的鏡像名稱和標簽號)

例2: docker run –name web1 -d nginx  (運行nginx的鏡像;-d 不要運行在后臺,因為此docker容器只有一個程序;如果運行在后臺,容器上沒有運行的程序,默認會終止此容器)

QQ截圖20180801111801

例3 :docker run –name red1 -d redis:4-alpine (創建一個redis鏡像,版本號不指定,默認安裝的時latest,由于本地沒有鏡像,會去官網上自動去下載)

QQ截圖20180801112301

下載下來的鏡像存放到本地,可以使用:docker image ls 來查看。

docker container ls -a    (查看處于停止狀態下的docker容器)

 

交互式的連接一個已經啟動的容器

-i:–interactive,交互式;
-t:Allocate a pseudo-TTY

docker exec -it red2 /bin/sh  (以交互式的方式進入到已經開啟的容器里面去)

docker ps:(列出容器的詳細信息在運行的容器)或者:docker container ps docker container ls 等命令都可以

docker ps -a   (列出所有容器,包括運行的和不在運行的)

docker image ls (列出本地的所有的鏡像文件)

docker restart:(重新啟動docker容器)  docker restart b1  (b1:為創建容器時定義的名稱)

docker stop:(停止docker容器)docker stop b1        (b1:為創建容器時定義的名稱)

docker kill:(強行停止docker容器)docker kill b1    (b1:為創建容器時定義的名稱)

docker rm    (刪除創建的容器)       docker rm b1            (b1:為創建容器時定義的名稱)

 

 

Docker鏡像:

官網上查找鏡像及版本號(tags)

在官網上搜尋docker的鏡像文件。  https://hub.docker.com/(官網搜尋地址)

 docker pull nginx:1.14-alpine (后面為版本信息,在官網啊地址上搜尋的結果)如果不加版本信息:

docker pull nginx 則下載下來的默認標簽為latest(最新的)的版本的。

QQ截圖20180801091515

QQ截圖20180801091457

docker image list   (查看已經下載下來的鏡像)

QQ截圖20180731221715

 

Docker鏡像的原理及組成

Docker鏡像含有啟動容器所需要的文件系統及其內容,因此, 其用于創建并啟動docker容器 。

結構:

采用分層構建機制,最底層為bootfs,其之為rootfs

bootfs:用于系統引導的文件系統,包括bootloader和kernel,容器啟動完 成后會被卸載以節約內存資源;

rootfs:位于bootfs之上,表現為docker容器的根文件系統;

傳統模式中,系統啟動之時,內核掛載rootfs時會首先將其掛載為“只讀”模式, 完整性自檢完成后將其重新掛載為讀寫模式

docker中,rootfs由內核掛載為“只讀”模式,而后通過“聯合掛載 ”技術額外掛 載一個“可寫”層;

 

 

位于下層的鏡像稱為父鏡像(parent image),最底層的稱為基礎 鏡像(base image)

最上層為“可讀寫”層,其下的均為“只讀”層

QQ截圖20180801140824

Registry  (docker鏡像倉庫)

在下載鏡像時,如果不指定路徑,默認是下載Docker Hub官方的鏡像倉庫里的鏡像文件。

如果也沒有指定tags(版本號);則默認下載latest(最新的)的版本。

Registry用于保存docker鏡像,包括鏡像的層次結構和元數據

Repository  :由單個類型的docker鏡像的所有迭代版本組成的鏡像倉庫 ;在鏡像倉庫之下。(例如:nginx;下面有多個版本的鏡像文件,都是nginx的標簽;但他都是nginx的鏡像文件)

一個 Registry是由多個Repository鏡像倉庫所組成的。

https://quay.io/  (另一個鏡像網站)

如果在此網上上下載格式為:docker pull quay.io/coreos/flannel:v0.10.0-arm64

(quay.io:官網地址:/coreos/flannel ;下圖中所搜尋的flannel的前綴;:v0.10.0-arm64:版本號)

QQ截圖20180801150316

 

QQ截圖20180801150740

 

鏡像的制作:

1 . 基于已有的容器,經過修改后,在制作后鏡像:

docker run –name b1 -it busybox:latest  (啟動一個容器)

進去之后添加一個html的文件:

mkdir -p /data/html

cd /data/html/

vi index.html

hello

不能將容器關閉或者退出,在容器運行狀態下,另外開啟一個linux的終端界面:

docker commit -p b1  (基于b1做新的鏡像文件)由于此處并沒有命名所以此鏡像只有id號而沒有名稱:

QQ截圖20180801152952

docker tag 2e8b205a2902 magedu/http:1.0 (由于剛創建的鏡像沒有名稱和標簽,使用不方便,可以創建名稱和標簽:創建時要使用其id號來引用)

docker tag magedu/http:1.0 magedu/http:1.1   (給同一個鏡像創建多個標簽)

QQ截圖20180801153737

當一個鏡像有多個標簽時,刪除一個標簽不會將鏡像刪除,如果只有一個標簽了,刪除了最后一個標簽就會將鏡像刪除了。

docker image rm magedu/http:1.1  (刪除其中一個鏡像標簽)

docker inspect nginx  (查看具體的鏡像里的內容)

docker run –name ttt -it magedu/http:1.0  (開啟新建的鏡像)

 

將鏡像推送到官網:

首先要在官網上注冊一個個人的賬號:https://hub.docker.com/

登陸后創建一個倉庫:Create Repository

magedu/httpd   (倉庫的名稱)

登陸:

docker login -u lvchenyang   (如果是推送到官網上,不用寫服務器的地址;如果不是則需要寫服務器的地址)

推送:

docker push magedu/httpd (如果不添加標簽的化默認推送magedu/httpd;所有版本的)

 

推送到阿里云的個人倉庫:

https://cr.console.aliyun.com/cn-hangzhou/repositories  (官網)

注冊賬號,創建新的鏡像倉庫。

QQ截圖20180801162411

想要將自己的鏡像推送到阿里云上要將鏡像重新打上阿里云的標簽

53天第3個視頻里有:70分鐘左右

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104294

(0)
無所謂無所謂
上一篇 2018-07-31 10:51
下一篇 2018-07-31 21:02

相關推薦

  • https網絡安全協議

    HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

    2018-06-22
  • 第三周筆記總結

    第七天運行腳本的條件:1、加執行權限或者bash+腳本名2、寫路徑(絕對、相對均可) 加執行權限以后,如果沒有放在PATH變量下的路徑內,運行腳本需要寫路徑3、如果不想寫路徑,可以將腳本放在PATH變量中的任何位置均可,通常放/root/bin下,/bin需要增加創建 腳本調試只檢測腳本中的語法錯誤bash -n /path/to/some_script跟蹤…

    Linux筆記 2018-04-15
  • Linux用戶組管理及用戶權限

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 ]# who | cut -d” ” -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 ]# last | head -1? 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 ]# cat /etc/…

    2018-07-05
  • 第十次筆記 二

    使用PEX和cobbleer實現網絡服務器自動化安裝系統

    2018-05-26
  • Linux運維命令以及概念整理總結(1)

    1、文件系統分層結構: LBS Linux Standard Base
    2、ls命令、wc命令、時間戳、stat、通配符glob
    3、touch、cp、mv、rm、批量改名rename
    4、tree、mkdir、rmdir
    5、節點編號inode以及節點表、硬鏈接以及軟鏈接
    6、file命令、標準輸入,標準輸出

    2018-04-14
  • shell 腳本編程基礎

    六、shell腳本編程 6.1bash腳本編程之變量 ? 作業提交地址:scp N wang@172.20.102.77:home/wang/bin ? 執行腳本的方法: 以bash程序來執行: bash hello.sh或cat hello.sh |bash 直接指令下達: 加權限:chmod +x hello.sh 絕對路徑:/home/hello.sh…

    2018-05-01
欧美性久久久久