日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Docker的安装和使用及dockerfile简单使用

發(fā)布時(shí)間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker的安装和使用及dockerfile简单使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Docker的安裝和使用及dockerfile簡(jiǎn)單使用

一、簡(jiǎn)介
Docker是一個(gè)基于go語(yǔ)言的開源的應(yīng)用容器引擎,可以將開發(fā)者的應(yīng)用及依賴包打包到一個(gè)可移植容器當(dāng)中,然后發(fā)布到任何流行的Linux機(jī)器中,可以極大的減少開發(fā)人員的工作量,Docker也可以實(shí)現(xiàn)虛擬化
二、Docker安裝
前提:
Docker自發(fā)布以來就變得非常火爆,目前Linux系統(tǒng)、windows系統(tǒng)和mac系統(tǒng)都支持docker,本文以Linux系統(tǒng)介紹Docker的安裝及簡(jiǎn)單使用。
Docker的發(fā)布時(shí)間也沒有多長(zhǎng)時(shí)間,因此Linux對(duì)Docker的支持也有限制,僅支持64位,目前centos7已經(jīng)支持docker,安裝要求系統(tǒng)為64位,內(nèi)核版本為3.10以上,對(duì)于centos6,安裝要求需centos6.5或更高版本,同樣系統(tǒng)為64位,docker僅支持64位,同時(shí)內(nèi)核版本為2.6.32-431 或者更高版本。
可以使用uname -a 查詢內(nèi)核版本

博主的內(nèi)核版本為3.10.0-862,為方便使用,安裝的是centos7系統(tǒng),如果是centos6還需要升級(jí)內(nèi)核版本,稍顯麻煩
Docker安裝:
Docker有兩個(gè)版本,Docker-ee和Docker-ce
Docker-ce是社區(qū)免費(fèi)版,Docker-ee為企業(yè)版,需要收費(fèi),本文安裝的為Docker-ce社區(qū)免費(fèi)版
安裝之前安裝相應(yīng)所需包依賴

登錄后復(fù)制

yum -y install yum-utils device-mapper-persistent-data lvm2


下載docker-ce的yum源到/etc/yum.repos.d/下

登錄后復(fù)制

wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


yum安裝docker-ce

docker安裝完成,啟動(dòng)docker,查看docker版本信息

登錄后復(fù)制

systemctl start docker


Docker安裝成功
三、Docker使用
首先從最簡(jiǎn)單的hello-world開始
運(yùn)行一個(gè)hello-world容器,本地最初沒有hello-world鏡像,會(huì)自動(dòng)從遠(yuǎn)端docker hub拉取

登錄后復(fù)制

docker run hello-world


使用docker images命令可查詢當(dāng)前本地主機(jī)上的鏡像,我的機(jī)器上原來有拉取其它鏡像會(huì)有點(diǎn)多,看到有hello-world鏡像即為ok

登錄后復(fù)制

docker images


刪除鏡像使用以下命令

登錄后復(fù)制

docker rmi imagename<imageid>


刪除成功
從遠(yuǎn)端docker hub拉取鏡像

登錄后復(fù)制

docker pull imagename<imageid>


查看本地鏡像列表,拉取成功

拉取之前可以查詢docker hub可拉取鏡像列表

登錄后復(fù)制

docker search imagename


第一個(gè)字段為imagename(鏡像名字),第四個(gè)字段為official,是否為官方鏡像,個(gè)人也可以把自己制作的鏡像放到docker hub上,找到自己想要下載的鏡像名字就可以拉取了。
運(yùn)行一個(gè)新的container

登錄后復(fù)制

docker run [-i -t -d -p -P -c] [--name]:在容器內(nèi)運(yùn)行一個(gè)應(yīng)用程序-t :在新容器內(nèi)指定一個(gè)偽終端或終端-i:允許你對(duì)容器內(nèi)的標(biāo)準(zhǔn)輸入進(jìn)行交互-d:以進(jìn)程方式運(yùn)行容器,讓容器在后臺(tái)運(yùn)行-p:設(shè)置端口-P:將容器內(nèi)部使用的網(wǎng)絡(luò)端口映射到我們使用的主機(jī),就是讓我們?cè)L問我們使用的主機(jī)就等同于訪問到容器內(nèi)部-c:command,后面接命令--name container name:指定容器名字

運(yùn)行一個(gè)新的container并調(diào)用打印命令

登錄后復(fù)制

docker run ubuntu:15.10 /bin/echo "Hello world"


運(yùn)行一個(gè)交互式的container(容器)

登錄后復(fù)制

docker run -it ubuntu:15.10 /bin/bash


可以發(fā)現(xiàn)已經(jīng)進(jìn)入到容器當(dāng)中,退出使用exitctl+d
從遠(yuǎn)程docker hub拉取一個(gè)鏡像

在后臺(tái)運(yùn)行一個(gè)新的container

登錄后復(fù)制

docker run -P --name test1 -d training/webapp python app.py


查看當(dāng)前運(yùn)行容器詳情

登錄后復(fù)制

docker ps


查看容器端口

登錄后復(fù)制

docker port containername<containerid>


可以看到容器test1的端口映射到了本機(jī)的32768,可以訪問本機(jī)ip的32768端口來查看

查看容器日志

登錄后復(fù)制

docker logs containername<containerid>


停止指定容器

登錄后復(fù)制

docker stop containername<containerid>


再次運(yùn)行該容器就可以使用

登錄后復(fù)制

docker start containername<containerid>


查看指定容器內(nèi)部運(yùn)行進(jìn)程

登錄后復(fù)制

docker top containername<containerid>


查看歷史啟動(dòng)的容器

登錄后復(fù)制

docker ps -a


刪除容器,容器必須處于停止?fàn)顟B(tài)

登錄后復(fù)制

docker rm containername<containerid>


其它命令
為鏡像添加新的標(biāo)簽

登錄后復(fù)制

docker tag

查詢?nèi)萜鱥p

登錄后復(fù)制

docker inspect containername<containerid>

提交容器副本

登錄后復(fù)制

docker commit [-m -a] container-id image-name -m:提交的描述信息 -a:指定鏡像作者 container-id:容器ID image-name:你要命名的鏡像名

先寫這么多,后續(xù)補(bǔ)充
補(bǔ)充:
前邊有提到可以將自己的本地鏡像上傳到docker hub上,那么如何生成自己的鏡像呢?docker提供一種docker file的方式來生成本地鏡像,你也可以通過docker file的方式把你的項(xiàng)目打包成鏡像來使用。
四、Dockerfile部分命令
首先,每個(gè)指令的前綴必須大寫

登錄后復(fù)制

登錄后復(fù)制

FROM 指定基礎(chǔ)鏡像,后可跟鏡像名字或鏡像id 例:FROM centos:6.0

登錄后復(fù)制

MAINTAINER 作者 指定作者 例:MAINTAINER root

登錄后復(fù)制

ADD 把文件復(fù)制到到容器的指定目錄,如果是tar包會(huì)自動(dòng)解壓,后可跟本地文件或url,如果是url,功能類似于wget 例:ADD nginx-1.9.3.tar.gz /usr/local

登錄后復(fù)制

RUN 告訴docker要在鏡像內(nèi)執(zhí)行的命令,后可跟shell命令或普通命令 例:1.RUN useradd test 2.RUN /bin/echo "hello test"

登錄后復(fù)制

CMD 容器啟動(dòng)時(shí)要運(yùn)行的命令 例:1.CMD ["nginx"] 2.CMD ["service mysqld start"]

登錄后復(fù)制

RUN & CMD 區(qū)別: RUN是構(gòu)建容器時(shí)就運(yùn)行的命令以及提交運(yùn)行結(jié)果,即執(zhí)行 docker build時(shí)運(yùn)行,一個(gè)dockerfile可以有多個(gè) CMD是容器啟動(dòng)時(shí)執(zhí)行的命令,即執(zhí)行 docker run時(shí)運(yùn)行,一個(gè)dockerfile只有1個(gè)

登錄后復(fù)制

LABEL為鏡像指定標(biāo)簽 例:LABEL version="1.0"

登錄后復(fù)制

EXPOSE 將容器的監(jiān)聽端口暴露給外部,這樣才能使主機(jī)和container建立映射,即在dokcer run使指定-p端口映射 關(guān)系 例:EXPOSE 80

登錄后復(fù)制

ENV 設(shè)置環(huán)境變量 例:ENV PATH /usr/local/nginx/sbin:$PATH

登錄后復(fù)制

VOLUME 可實(shí)現(xiàn)掛載功能,可以將內(nèi)地文件夾或者其他容器中的文件夾掛在到這個(gè)容器中,容器使用的是AUFS, 這種文件系統(tǒng)不能持久化數(shù)據(jù),當(dāng)容器關(guān)閉后,所有的更改都會(huì)丟失。所以當(dāng)數(shù)據(jù)需要持久化時(shí)用這個(gè)命令。 例:VOLUME /usr/local/nginx/conf/nginx.conf /etc/nginx/nginx.conf 將主機(jī)上的/usr/local/nginx/conf/nginx.conf文件掛在到容器的/etc/nginx/nginx.conf文件

登錄后復(fù)制

copy 與add類似,區(qū)別為copy后只能跟本地目錄

登錄后復(fù)制

workdir 設(shè)置工作目錄,類似于linux的cd命令

登錄后復(fù)制

user 設(shè)置啟動(dòng)容器的用戶 1.USER daemon 2.USER UID

登錄后復(fù)制

stopsignal 當(dāng)容器退出時(shí)給系統(tǒng)發(fā)送什么樣的指令

dockerfile命令其實(shí)有好多和linux系統(tǒng)本身命令的功能相似,還是相對(duì)比較好理解,為方便理解,博主做了一個(gè)關(guān)于將nginx服務(wù)打包成鏡像并使用的一個(gè)例子。
首先我們需要把我們的要用到的nginx安裝包和dockerfile放在同一目錄下

創(chuàng)建Dockerfile文件,其實(shí)就是把nginx的安裝過程寫成了腳本,只不過要符合dockerfile的規(guī)范。

登錄后復(fù)制

FROM centos:6.7 ---基礎(chǔ)鏡像centos6.7 MAINTAINER test ----dockerfile作者,testADD nginx-1.6.2.tar.gz /usr/local/src ----解壓nginx安裝包到container的/usr/local/src中 RUN yum -y install wget gcc gcc-c++ make openssl-devel pcre-devel ---在容器內(nèi)要執(zhí)行的命令,安裝包依賴 RUN useradd -s /sbin/nologin nginx --------在容器內(nèi)要執(zhí)行的命令,新增nginx用戶 WORKDIR /usr/local/src/nginx-1.6.2 ------------container內(nèi)跳轉(zhuǎn)目錄到/usr/local/src/nginx-1.6.2 RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module && make && make install ------ 在容器內(nèi)要執(zhí)行的命令,源碼安裝nginx RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf ------在容器內(nèi)要執(zhí)行的命令,設(shè)置nginx前臺(tái)運(yùn)行 ENV PATH /usr/local/nginx/sbin:$PATH ---- ---設(shè)置環(huán)境變量 EXPOSE 80 --------------------------------------------設(shè)置映射端口 CMD ["nginx"] ---------------------------------------容器啟動(dòng)時(shí)要執(zhí)行的命令


構(gòu)建鏡像操作

登錄后復(fù)制

docker build

執(zhí)行

登錄后復(fù)制

docker build -t nginx:1.6 . -t ---------指定鏡像名和標(biāo)簽

請(qǐng)注意,最后面有一個(gè)點(diǎn)?‘.’,指定dockerfile的路徑,也可以寫為絕對(duì)路徑

執(zhí)行成功會(huì)出現(xiàn)

查看本地鏡像可以看到我們構(gòu)建的鏡像

運(yùn)行我們構(gòu)建的鏡像,映射到本地的80端口

查看本地端口80

訪問本地80端口,成功

總結(jié)

以上是生活随笔為你收集整理的Docker的安装和使用及dockerfile简单使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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