最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker容器創(chuàng)建的全流程分享

 更新時間:2025年05月21日 10:16:05   作者:阿拉斯加大閘蟹  
這篇文章主要介紹了docker容器創(chuàng)建的全流程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

普通啟動的容器

runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world

各個參數(shù)解析:

  • docker: Docker 的二進(jìn)制執(zhí)行文件。
  • run:與前面的 docker 組合來運行一個容器。
  • ubuntu:15.10指定要運行的鏡像,Docker首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
  • /bin/echo "Hello world": 在啟動的容器里執(zhí)行的命令

運行交互式的容器

我們通過docker的兩個參數(shù) -i -t,讓docker運行的容器實現(xiàn)"對話"的能力

runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@dc0050c79503:/#

各個參數(shù)解析:

  • -t:在新容器內(nèi)指定一個偽終端或終端。
  • -i:允許你對容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互。

啟動容器(后臺模式)

使用以下命令創(chuàng)建一個以進(jìn)程方式運行的容器

runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

首先,我們需要確認(rèn)容器有在運行,可以通過 docker ps 來查看

runoob@runoob:~$ docker ps

  • CONTAINER ID:容器ID
  • NAMES:自動分配的容器名稱

在容器內(nèi)使用docker logs命令,查看容器內(nèi)的標(biāo)準(zhǔn)輸出

runoob@runoob:~$ docker logs 2b1b7a428627

停止容器

我們使用 docker stop 命令來停止容器:

通過docker ps查看,容器已經(jīng)停止工作:

runoob@runoob:~$ docker ps

運行一個web應(yīng)用

前面我們運行的容器并沒有一些什么特別的用處。

接下來讓我們嘗試使用 docker 構(gòu)建一個 web 應(yīng)用程序。

我們將在docker容器中運行一個 Python Flask 應(yīng)用來運行一個web應(yīng)用。

runoob@runoob:~# docker pull training/webapp  # 載入鏡像
runoob@runoob:~# docker run -d -P training/webapp python app.py

參數(shù)說明:

  • -d:讓容器在后臺運行。
  • -P:將容器內(nèi)部使用的網(wǎng)絡(luò)端口映射到我們使用的主機上。

查看 WEB 應(yīng)用容器

使用 docker ps 來查看我們正在運行的容器:

Docker 開放了 5000 端口(默認(rèn) Python Flask 端口)映射到主機端口 32769 上。

這時我們可以通過瀏覽器訪問WEB應(yīng)用

我們也可以通過 -p 參數(shù)來設(shè)置不一樣的端口:

runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker ps查看正在運行的容器

runoob@runoob:~#  docker ps
CONTAINER ID        IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar
d3d5e39ed9d3        training/webapp     ...        0.0.0.0:32769->5000/tcp   xenodochial_hoov

容器內(nèi)部的 5000 端口映射到我們本地主機的 5000 端口上。

網(wǎng)絡(luò)端口的快捷方式

通過 docker ps 命令可以查看到容器的端口映射,docker 還提供了另一個快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某個確定端口映射到宿主機的端口號。

上面我們創(chuàng)建的 web 應(yīng)用容器 ID 為 bf08b7f2cd89 名字為 wizardly_chandrasekhar。

我可以使用 docker port bf08b7f2cd89 或 docker port wizardly_chandrasekhar 來查看容器端口的映射情況。

runoob@runoob:~$ docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000
runoob@runoob:~$ docker port wizardly_chandrasekhar
5000/tcp -> 0.0.0.0:5000

查看 WEB 應(yīng)用程序日志

docker logs [ID或者名字] 可以查看容器內(nèi)部的標(biāo)準(zhǔn)輸出。

runoob@runoob:~$ docker logs -f bf08b7f2cd89
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -

-f:docker logs 像使用 tail -f 一樣來輸出容器內(nèi)部的標(biāo)準(zhǔn)輸出。

移除WEB應(yīng)用容器

我們可以使用 docker rm 命令來刪除不需要的容器

runoob@runoob:~$ docker rm wizardly_chandrasekhar  
wizardly_chandrasekhar

刪除容器時,容器必須是停止?fàn)顟B(tài),否則會報如下錯誤

runoob@runoob:~$ docker rm wizardly_chandrasekhar
Error response from daemon: You cannot remove a running container bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container before attempting removal or force remove

構(gòu)建鏡像

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

runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      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/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

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

第一條FROM,指定使用哪個鏡像源

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

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

runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......

參數(shù)說明:

  • -t :指定要創(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.7                 860c279d2fec        About a minute ago   190.6 MB
runoob/ubuntu       v2                  70bf1840fd7c        17 hours ago         158.5 MB
ubuntu              14.04               90d5884b1ee0        6 days ago           188 MB
php                 5.6                 f40e9e0f10c8        10 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago          324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 weeks ago          136.3 MB
hello-world         latest              690ed74de00f        6 months ago         960 B
centos              6.7                 d95b5ca17cc3        6 months ago         190.6 MB
training/webapp     latest              6fae60ef3446        12 months ago        348.8 MB

我們可以使用新的鏡像來創(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

網(wǎng)絡(luò)端口映射

我們創(chuàng)建了一個 python 應(yīng)用的容器。

runoob@runoob:~$ docker run -d -P training/webapp python app.py
fce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d

另外,我們可以指定容器綁定的網(wǎng)絡(luò)地址,比如綁定 127.0.0.1。

我們使用 -P 參數(shù)創(chuàng)建一個容器,使用 docker ps 來看到端口5000綁定主機端口32768。

另外,我們可以指定容器綁定的網(wǎng)絡(luò)地址,比如綁定127.0.0.1。

runoob@runoob:~$ docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
95c6ceef88ca3e71eaf303c2833fd6701d8d1b2572b5613b5a932dfdfe8a857c

這樣我們就可以通過訪問127.0.0.1:5001來訪問容器的5000端口。

上面的例子中,默認(rèn)都是綁定 tcp 端口,如果要綁定 UDP 端口,可以在端口后面加上 /udp

runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a

docker port 命令可以讓我們快捷地查看端口的綁定情況。

runoob@runoob:~$ docker port adoring_stonebraker 5000
127.0.0.1:5001

Docker容器連接

端口映射并不是唯一把 docker 連接到另一個容器的方法。

docker有一個連接系統(tǒng)允許將多個容器連接在一起,共享連接信息。

docker連接會創(chuàng)建一個父子關(guān)系,其中父容器可以看到子容器的信息。

容器命名:

當(dāng)我們創(chuàng)建一個容器的時候,docker會自動對它進(jìn)行命名。另外,我們也可以使用--name標(biāo)識來命名容器,例如:

runoob@runoob:~$  docker run -d -P --name runoob training/webapp python app.py
43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441

我們可以使用 docker ps 命令來查看容器名稱。

runoob@runoob:~$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
43780a6eabaa        training/webapp     "python app.py"     3 minutes ago       Up 3 minutes        0.0.0.0:32769->5000/tcp   runoob

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 從0開始了解Docker入門(小結(jié))

    從0開始了解Docker入門(小結(jié))

    本篇文章主要介紹了從0開始了解Docker(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Win10系統(tǒng)使用docker部署ragflow的實現(xiàn)

    Win10系統(tǒng)使用docker部署ragflow的實現(xiàn)

    本文主要介紹了Win10系統(tǒng)使用docker部署ragflow的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • Docker安裝Redis掛載配置全過程

    Docker安裝Redis掛載配置全過程

    本篇文章介紹了創(chuàng)建掛載文件目錄、書寫配置文件、拉取鏡像文件和啟動容器的步驟,個人經(jīng)驗分享,希望大家參考支持
    2025-12-12
  • Dockerfile中將多行配置、腳本寫入文件的4種實用方法

    Dockerfile中將多行配置、腳本寫入文件的4種實用方法

    本文總結(jié)了Dockerfile中將多行配置、腳本寫入文件的4種實用寫法,重點介紹了在舊版Docker不支持heredoc語法的問題,并基于實測提供了可直接復(fù)制的穩(wěn)定示例,需要的朋友可以參考下
    2026-04-04
  • Docker搭建Redis5.0并掛載數(shù)據(jù)

    Docker搭建Redis5.0并掛載數(shù)據(jù)

    本文主要介紹了Docker搭建Redis5.0并掛載數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Docker容器時間與宿主機不一致的解決方案

    Docker容器時間與宿主機不一致的解決方案

    在日常開發(fā)和運維工作中,許多開發(fā)者在使用 Docker 時會遇到一個常見問題:容器內(nèi)的時間比宿主機慢了 8 小時,這種情況尤其在中國地區(qū)(使用東八區(qū)時間)更為常見,本文給大家介紹了Docker容器時間與宿主機不一致的三種解決方案,需要的朋友可以參考下
    2025-05-05
  • Docker配置阿里云鏡像加速pull的實現(xiàn)

    Docker配置阿里云鏡像加速pull的實現(xiàn)

    這篇文章主要介紹了Docker配置阿里云鏡像加速pull的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • docker守護(hù)進(jìn)程的配置和操作的方法

    docker守護(hù)進(jìn)程的配置和操作的方法

    這篇文章主要介紹了docker守護(hù)進(jìn)程的配置和操作的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Docker?中?MySQL?的部署與管理技巧

    Docker?中?MySQL?的部署與管理技巧

    這篇文章主要介紹了Docker?中?MySQL?的部署與管理技巧,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Docker 安裝 Jenkins 并解決初始安裝插件失敗問題

    Docker 安裝 Jenkins 并解決初始安裝插件失敗問題

    這篇文章主要介紹了Docker 安裝 Jenkins 并解決初始安裝插件失敗問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04

最新評論

平利县| 渝中区| 新宾| 玛曲县| 朝阳县| 全南县| 调兵山市| 扎赉特旗| 玉树县| 云南省| 竹山县| 新宾| 吕梁市| 荣成市| 赤壁市| 昭苏县| 麻阳| 长治县| 冀州市| 德令哈市| 台湾省| 垣曲县| 永昌县| 岑溪市| 太湖县| 临湘市| 汤阴县| 广饶县| 桐乡市| 依安县| 秭归县| 景东| 曲阜市| 崇义县| 丹棱县| 甘南县| 当阳市| 武定县| 商南县| 太仓市| 万载县|