日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

系统制成docker镜像_Docker学习以及镜像制作流程

發(fā)布時(shí)間:2025/5/22 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统制成docker镜像_Docker学习以及镜像制作流程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、何為Docker

Docker 是一個(gè)開源的應(yīng)用容器引擎,基于?Go 語言?并遵從Apache2.0協(xié)議開源。

Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。

容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

Docker的應(yīng)用場景

Web 應(yīng)用的自動(dòng)化打包和發(fā)布。

自動(dòng)化測試和持續(xù)集成、發(fā)布。

在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺應(yīng)用。

從頭編譯或者擴(kuò)展現(xiàn)有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環(huán)境。

二、Docker架構(gòu)

容器 VS 虛擬機(jī):

容器和虛擬機(jī)具有相似的資源隔離和分配優(yōu)勢,但功能有所不同,因?yàn)槿萜魈摂M化的是操作系統(tǒng),而不是硬件,因此容器更容易移植,效率也更高。

容器是一個(gè)應(yīng)用層抽象,用于將代碼和依賴資源打包在一起。多個(gè)容器可以在同一臺機(jī)器上運(yùn)行,共享操作系統(tǒng)內(nèi)核,但各自作為獨(dú)立的進(jìn)程在用戶空間中運(yùn)行。與虛擬機(jī)相比,容器占用的空間較少(容器鏡像大小通常只有幾十兆),瞬間就能完成啟動(dòng)。

虛擬機(jī) (VM) 是一個(gè)物理硬件層抽象,用于將一臺服務(wù)器變成多臺服務(wù)器。管理程序允許多個(gè) VM 在一臺機(jī)器上運(yùn)行。每個(gè) VM 都包含一整套操作系統(tǒng)、一個(gè)或多個(gè)應(yīng)用、必要的二進(jìn)制文件和庫資源,因此占用大量空間。而且 VM 啟動(dòng)也十分緩慢。

三、Docker安裝

前提條件

目前,CentOS 僅發(fā)行版本中的內(nèi)核支持 Docker。

Docker 運(yùn)行在 CentOS 7 上,要求系統(tǒng)為64位、系統(tǒng)內(nèi)核版本為 3.10 以上。

Docker 運(yùn)行在?CentOS-6.5?或更高的版本的 CentOS 上,要求系統(tǒng)為64位、系統(tǒng)內(nèi)核版本為 2.6.32-431 或者更高版本。

使用 yum 安裝(CentOS 7下)

Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 ,查看本頁面的前提條件來驗(yàn)證你的CentOS 版本是否支持 Docker 。

通過?uname -r命令查看你當(dāng)前的內(nèi)核版本

[root@runoob ~]#uname -r 3.10.0-327.el7.x86_64

安裝 Docker

Docker 軟件包和依賴包已經(jīng)包含在默認(rèn)的 CentOS-Extras 軟件源里,安裝命令如下:

[root@runoob ~]#yum -y install docker-io

安裝完成。

啟動(dòng) Docker 后臺服務(wù)

[root@runoob ~]#service docker start

測試運(yùn)行 hello-world

[root@runoob ~]#docker run hello-world

由于本地沒有hello-world這個(gè)鏡像,所以會(huì)下載一個(gè)hello-world的鏡像,并在容器內(nèi)運(yùn)行。

使用腳本安裝 Docker

1、使用?sudo?或?root?權(quán)限登錄 Centos。

2、確保 yum 包更新到最新。

$ sudo yum update

3、執(zhí)行 Docker 安裝腳本。

$ curl -fsSL https://get.docker.com/ | sh

執(zhí)行這個(gè)腳本會(huì)添加?docker.repo?源并安裝 Docker。

4、啟動(dòng) Docker 進(jìn)程。

$ sudo service docker start

5、驗(yàn)證?docker?是否安裝成功并在容器中執(zhí)行一個(gè)測試的鏡像。

$ sudo docker run hello-world

到此,docker 在 CentOS 系統(tǒng)的安裝完成。

四、Docker 使用

docker run ubuntu:15.10 /bin/echo "Hello world" -- docker [option] OS /bash//echo "content"

各個(gè)參數(shù)解析:

docker:?Docker 的二進(jìn)制執(zhí)行文件。

run:與前面的 docker 組合來運(yùn)行一個(gè)容器。

ubuntu:15.10指定要運(yùn)行的鏡像,Docker首先從本地主機(jī)上查找鏡像是否存在,如果不存在,Docker 就會(huì)從鏡像倉庫?Docker Hub?下載公共鏡像。

/bin/echo "Hello world":在啟動(dòng)的容器里執(zhí)行的命令

以上命令完整的意思可以解釋為:Docker 以 ubuntu15.10 鏡像創(chuàng)建一個(gè)新容器,然后在容器里執(zhí)行 bin/echo "Hello world",然后輸出結(jié)果。

[option] run , stop

1、docker -h 幫助

2、獲取鏡像

sudo docker pull NAME[:TAG]

sudo docker pull centos:latest

3、啟動(dòng)Container盒子

sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

sudp docker run -t -i contos /bin/bash

4、查看鏡像列表,列出本地的所有images

sudo docker images [OPTIONS] [NAME]

sudo docker images centos

5、查看容器列表,可看到我們創(chuàng)建過的所有container

sudo docker ps [OPTIONS]

sudo docker ps -a

6、刪除鏡像,從本地刪除一個(gè)已經(jīng)下載的鏡像

sudo docker rmi IMAGE [IMAGE...]

sudo docker rmi centos:latest

7、移除一個(gè)或多個(gè)容器實(shí)例

sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]

移除所有微運(yùn)行的容器

sudo docker rm sudo docker ps -aq

8、停止一個(gè)正在運(yùn)行的容器

sudo docker kill [OPTIONS] CONTAINER [CONTAINNER...]

sudo docker kill 026e

9、重啟一個(gè)正在運(yùn)行的容器

sudo docker restart [OPTIONS] contains[CONTAINER]

sudo docker restart 026e

10、停止一個(gè)已經(jīng)停止的容器

sudo docker start [OPTIONS] CONTAINER [CONTAINER..]

sudo docker start 026e

五、Docker制作

我們使用命令?docker build?, 從零開始來創(chuàng)建一個(gè)新的鏡像。為此,我們需要?jiǎng)?chuàng)建一個(gè)?Dockerfile?文件,其中包含一組指令來告訴 Docker 如何構(gòu)建我們的鏡像。

runoob@runoob:~$ cat DockerfileFROM centos:6.7MAINTAINER Fisher"fisher@sudops.com"RUN /bin/echo 'root:123456'|chpasswd

RUN useradd runoob

RUN /bin/echo 'runoob:123456'|chpasswd

RUN /bin/echo -e "LANG=\"en_US.UTF-8\"">/etc/default/localEXPOSE 22EXPOSE 80CMD /usr/sbin/sshd -D

每一個(gè)指令都會(huì)在鏡像上創(chuàng)建一個(gè)新的層,每一個(gè)指令的前綴都必須是大寫的。

第一條FROM,指定使用哪個(gè)鏡像源

RUN 指令告訴docker 在鏡像內(nèi)執(zhí)行命令,安裝了什么。。。

然后,我們使用?Dockerfile?文件,通過?docker build?命令來構(gòu)建一個(gè)鏡像。

runoob@runoob:~$ docker build -t runoob/centos:6.7.Sendingbuild context to Dockerdaemon 17.92kB

Step1:FROM centos:6.7--->d95b5ca17cc3

Step2:MAINTAINER Fisher"fisher@sudops.com"--->Usingcache

--->0c92299c6f03Step3:RUN /bin/echo 'root:123456'|chpasswd

--->Usingcache

--->0397ce2fbd0aStep4:RUN useradd runoob

......

參數(shù)說明:

-t?:指定要?jiǎng)?chuàng)建的目標(biāo)鏡像名

.?:Dockerfile?文件所在目錄,可以指定Dockerfile?的絕對路徑

使用docker images 查看創(chuàng)建的鏡像已經(jīng)在列表中存在,鏡像ID為860c279d2fec

runoob@runoob:~$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

runoob/centos 6.7860c279d2fecAbouta minute ago 190.6MB

runoob/ubuntu v2 70bf1840fd7c17hours ago 158.5MB

ubuntu 14.0490d5884b1ee06days ago 188MB

php 5.6f40e9e0f10c8 10days ago 444.8MB

nginx latest 6f8d099c3adc12days ago 182.7MB

mysql 5.6f2e8d6c772c0 3weeks ago 324.6MB

httpd latest 02ef73cf1bc03weeks ago 194.4MB

ubuntu 15.104e3b13c8a2665weeks ago 136.3MB

hello-world latest 690ed74de00f6months ago 960B

centos 6.7d95b5ca17cc3 6months ago 190.6MB

training/webapp latest 6fae60ef344612months ago 348.8MB

我們可以使用新的鏡像來創(chuàng)建容器

runoob@runoob:~$ docker run -t -i runoob/centos:6.7/bin/bash

[root@41c28d18b5fb /]#id runoob

uid=500(runoob)gid=500(runoob)groups=500(runoob)

從上面看到新鏡像已經(jīng)包含我們創(chuàng)建的用戶runoob

設(shè)置鏡像標(biāo)簽

我們可以使用?docker tag?命令,為鏡像添加一個(gè)新的標(biāo)簽。

runoob@runoob:~$ docker tag 860c279d2fecrunoob/centos:dev

docker tag?鏡像ID,這里是?860c279d2fec ,用戶名稱、鏡像源名(repository name)和新的標(biāo)簽名(tag)。

使用 docker images 命令可以看到,ID為860c279d2fec的鏡像多一個(gè)標(biāo)簽。

runoob@runoob:~$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

runoob/centos 6.7860c279d2fec5hours ago 190.6MB

runoob/centos dev 860c279d2fec5hours ago 190.6MB

runoob/ubuntu v2 70bf1840fd7c22hours ago 158.5MB

ubuntu 14.0490d5884b1ee06days ago 188MB

php 5.6f40e9e0f10c8 10days ago 444.8MB

nginx latest 6f8d099c3adc13days ago 182.7MB

mysql 5.6f2e8d6c772c0 3weeks ago 324.6MB

httpd latest 02ef73cf1bc03weeks ago 194.4MB

ubuntu 15.104e3b13c8a2665weeks ago 136.3MB

hello-world latest 690ed74de00f6months ago 960B

centos 6.7d95b5ca17cc3 6months ago 190.6MB

training/webapp latest 6fae60ef344612months ago 348.8MB

Docker 刪除鏡像

分為兩部:

首先 刪除 容器,再刪除鏡像

docker ps -a

docker rm id

刪除鏡像

docker ps -a

docker images

docker rmi id

檢查是否刪除成功

docker images

注意點(diǎn):

1. 刪除前需要保證容器是停止的 ?stop

2. 需要注意刪除鏡像和容器的命令不一樣。 docker rmi ID ?,其中 容器(rm) ?和 鏡像(rmi)

3. 順序需要先刪除容器

參考文獻(xiàn):

http://www.runoob.com/docker/centos-docker-install.html

http://www.runoob.com/docker/windows-docker-install.html(windows10安裝docker)

https://www.cnblogs.com/yufeng218/p/8370670.html

https://blog.csdn.net/winy_lm/article/details/77980529

總結(jié)

以上是生活随笔為你收集整理的系统制成docker镜像_Docker学习以及镜像制作流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。