Docker基礎(chǔ)總結(jié)

  • Docker

    常用命令

    docker verision --> 版本

    docker ps —> 查看當(dāng)前容器

    docker ps -a —> 查看所有容器

    docker images —> 查看當(dāng)前所有鏡像

    docker search nginx —> 搜索可用的 docker 鏡像

    docker pull nginx —> 下載鏡像容器

    docker run nginx echo "hello world" —>在docker容器中運(yùn)行"hello world"

    • docker run 命令有兩個(gè)參數(shù),一個(gè)是鏡像名,一個(gè)是要在鏡像中運(yùn)行的命令。

    docker run learn/tutorial apt-get install -y ping

    • 基于 ubuntu 的鏡像可以使用 apt-get 的命令來安裝

    docker commit —> 保存對(duì)容器的修改

    docker run learn/ping ping www.baidu.com

    docker inspect id 查看運(yùn)行中鏡像的詳細(xì)狀態(tài)

    docker login —> 登錄

    docker push yourname/imagesname —> 提交鏡像到自己的 Docker Hub

    docker run -p 80:80 name/imagesname —>通過 -p 參數(shù)對(duì)外指定 80 端口

    ?

    Dockerfile

    FROM ubuntu:14.04   // 指定鏡像基于ubuntu 14.04構(gòu)建
    MAINTAINER saymagic saymagic@163.com   // 創(chuàng)建鏡像的用戶
    RUN apt-get update    // shell
    RUN apt-get install -y nginx
    COPY ./www /usr/share/nginx/html // copy
    EXPOSE 80 // 暴露80端口
    CMD ["nginx", "-g", "daemon off;"] // 運(yùn)行容器時(shí)開啟nginx
    

    http://www.docker.org.cn/dockerppt/114.html

    ?

    Docker網(wǎng)絡(luò)配置

    Dokcer 通過使用 Linux 橋接提供容器之間的通信,docker0 橋接接口的目的就是方便 Docker 管理。

    • creates the docker0 bridge if not present
      • # 如果 docker0 不存在則創(chuàng)建
    • searches for an IP address range which doesn’t overlap with an existing route
      • # 搜索一個(gè)與當(dāng)前路由不沖突的 ip 段
    • picks an IP in the selected range
      • # 在確定的范圍中選擇 ip
    • assigns this IP to the docker0 bridge
      • # 綁定 ip 到 docker0

    Docker 默認(rèn)有四種網(wǎng)絡(luò)模式

    • host 模式,使用 --net=host 指定。

      • 如果啟動(dòng)容器的時(shí)候使用 host 模式,那么這個(gè)容器將不會(huì)獲得一個(gè)獨(dú)立的 Network Namespace,而是和宿主機(jī)共用一個(gè) Network Namespace。容器將不會(huì)虛擬出自己的網(wǎng)卡,配置自己的 IP 等,而是使用宿主機(jī)的 IP 和端口。
      • 容器的其他方面,如文件系統(tǒng)、進(jìn)程列表等還是和宿主機(jī)隔離的。
    • container 模式,使用 --net=container:NAMEorID 指定。

      • 這個(gè)模式指定新創(chuàng)建的容器和已經(jīng)存在的一個(gè)容器共享一個(gè) Network Namespace,而不是和宿主機(jī)共享。新創(chuàng)建的容器不會(huì)創(chuàng)建自己的網(wǎng)卡,配置自己的 IP,而是和一個(gè)指定的容器共享 IP、端口范圍等。
    • none 模式,使用 --net=none 指定。

      • 這個(gè)模式和前兩個(gè)不同。在這種模式下,Docker 容器擁有自己的 Network Namespace,但是,并不為 Docker容器進(jìn)行任何網(wǎng)絡(luò)配置。也就是說,這個(gè) Docker 容器沒有網(wǎng)卡、IP、路由等信息。需要我們自己為 Docker 容器添加網(wǎng)卡、配置 IP 等。
    • bridge 模式,使用 --net=bridge 指定,默認(rèn)設(shè)置。

      • bridge 模式是 Docker 默認(rèn)的網(wǎng)絡(luò)設(shè)置,此模式會(huì)為每一個(gè)容器分配 Network Namespace、設(shè)置 IP 等,并將一個(gè)主機(jī)上的 Docker 容器連接到一個(gè)虛擬網(wǎng)橋上。

      • 當(dāng) Docker server 啟動(dòng)時(shí),會(huì)在主機(jī)上創(chuàng)建一個(gè)名為 docker0 的虛擬網(wǎng)橋,此主機(jī)上啟動(dòng)的 Docker 容器會(huì)連接到這個(gè)虛擬網(wǎng)橋上。虛擬網(wǎng)橋的工作方式和物理交換機(jī)類似,這樣主機(jī)上的所有容器就通過交換機(jī)連在了一個(gè)二層網(wǎng)絡(luò)中。

      • 接下來就要為容器分配 IP 了,Docker 會(huì)從 RFC1918 所定義的私有 IP 網(wǎng)段中,選擇一個(gè)和宿主機(jī)不同的IP地址和子網(wǎng)分配給 docker0,連接到 docker0 的容器就從這個(gè)子網(wǎng)中選擇一個(gè)未占用的 IP 使用。如一般 Docker 會(huì)使用 172.17.0.0/16 這個(gè)網(wǎng)段,并將 172.17.42.1/16 分配給 docker0 網(wǎng)橋

        (在主機(jī)上使用 ifconfig 命令是可以看到 docker0 的,可以認(rèn)為它是網(wǎng)橋的管理接口,在宿主機(jī)上作為一塊虛擬網(wǎng)卡使用)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,759評(píng)論 0 120
  • 五、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問不到的。此外,除了...
    R_X閱讀 1,963評(píng)論 0 7
  • Docker簡(jiǎn)介1 什么是Docker2 為什么使用Docker3 Docker的安裝與啟動(dòng)及常用命令4 Dock...
    lucus_guo閱讀 430評(píng)論 0 0
  • 很多人可能在項(xiàng)目中已經(jīng)使用docker很長時(shí)間,但是卻很少有人知道docker的網(wǎng)絡(luò)是如何實(shí)現(xiàn)的。我應(yīng)該就算是很多...
    水雨田閱讀 1,244評(píng)論 0 3
  • 找不到對(duì)象僅僅是因?yàn)殚L得丑嗎?找不到對(duì)象僅僅是因?yàn)楦F嗎?找不到對(duì)象僅僅是因?yàn)榇绬幔?《學(xué)會(huì)提問》的第九章告訴我們:...
    阿不快跑閱讀 483評(píng)論 0 0

友情鏈接更多精彩內(nèi)容