docker pull http://hub.c.163.com/public/ubuntu:14.04 指明地址和版本號下載html
docker倉庫地址:hub.docker.com 帳戶:docker0325 密碼:ZB.8860244 當出現timeout異常是應該沒有登錄hub.docker.com docker loginpython
docker run -it ubuntu bashlinux
docker imagesnginx
images 子命令:git
-a, -all=true|false 列出全部的鏡像文件(包括臨時文件),默認爲否github
--digests=ture|false 列出鏡像的數字摘要值,默認爲否web
-f, --filter=[] 過濾出全部的鏡像。redis
--format=="TEMPLATE" 控制輸出的格式,如ID表明ID信息, Repository表明倉庫信息docker
--no-trunc=true|false 對輸出結果中太長的部分是否進行截斷,如鏡像的ID信息,默認爲是shell
-q,--quiet=true|false 僅輸出ID信息,默認爲否
docker tag ubuntu:latest myubuntu:latest
docker inspect ubuntu:14.04
docker history ubuntu:14.04
docker search
--automated=true|false 僅顯示自動建立的鏡像,默認爲否
--no-trunc=true|false 輸出信息不截斷顯示,默認爲否
-s, --stars=X 指定僅顯示評價爲指定星級以上的鏡像,默認爲0
docker rmi ubuntu
docker ps -a
基於已有鏡像的容器建立
1:首先運行容器,docker run -it ubuntu:14.04 /bin/bash
2:修改容器內容,好比在容器裏面添加一個文件 touch test
3:exit 退出容器,記住容器ID, 容器ID是 啓動容器後,root@322ced3aaala 其中322ced3aaala 就是容器ID
4:建立新鏡像, docker commit -m "Added a new file" -a "Docker Newbee" 322ced3aaala test:0.1
docker push user/ubuntu:0.1 用戶user上傳鏡像ubuntu 版本0.1
docker run ubuntu /bin/echo 'Hello world'
docker run -d ubuntu /bin/sh -c "while true;do echo hello world;sleep 1;done"
8322eb713648fa4e8c1337a0960b3934f72bac115f21cb419003b3ed1546526a
docker run -d -c 1 -m 10m ubuntu
docker run -d --cpuset-0,1 -m 10m ubuntu
docker logs 8322eb713648fa4e8c1337a0960b3934f72bac115f21cb419003b3ed1546526a 容器返回的id
docker stop 8322eb713648fa4e8c1337a0960b3934f72bac115f21cb419003b3ed1546526a
docker ps -qa
docker start
docker restartdocker
docker exec -it 容器id /bin/bash
docker rm 容器id
docker rm -f 容器id -f 可刪除正在運行的容器
https://hub.docker.com
service docker restart
1:docker run -d -p 5000:5000 registry ,下載registry容器,建立本地倉庫,默認地址:/var/lib/registry
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry 可指定倉庫安裝地址
2:先pull一個小鏡像
docker pull busybox
3:修改鏡像的tag
docker tag busybox 127.0.0.1:5000/busybox
4:將打了tag的鏡像上傳到私有倉庫中
docker push 127.0.0.1:5000/busybox
6:刪除本地busybox鏡像,從私有倉庫pull下來該鏡像
docker pull 127.0.0.1/busybox
建立數據卷
建立數據卷:掛載一個主機目錄做爲數據卷
docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py ro是隻讀,默認權限是讀寫
建立數據卷容器
docker run -it -v /dbdata --name dbdata ubuntu
啓動兩個容器 掛載數據卷容器
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
備份數據卷容器裏面的數據卷
未學習
恢復數據卷的數據到容器裏
未學習
docker run -d -P training/webapp python app.py -p(小寫)須要指定端口, -P(大寫)隨機分配端口映射
docker run -d -p 5000:5000 training/webapp python app.py
綁定多個端口,屢次使用-p
docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py
映射到指定地址的指定端口
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
映射到指定地址的任意端口,綁定192.168.22.146的任意一個端口到容器的5000端口
docker run -d -p 192.168.22.146::5000 training/webapp python app.py
docker port 容器名
1:首先建立一個數據庫容器
docker run -d --name db training/postgres
2:建立web容器並 link 數據庫容器,link name:alias
docker run -d -P --name web --link db:db traning/webapp python.py
3:此時進入web 容器,可使用 ping db 來測試容器是否相通 ubuntu 安裝ping 命令 apt-get install -yqq inetutils-ping
docker run --rm --name web2 --link db:db training/webapp eny
使用Dockerfile建立鏡像,sshd:dockerfile 是鏡像名:版本號 ,千萬注意最後的那個.不能丟掉
docker build -it sshd:dockerfile .
docker run -i -d -p 80:80 -e APACHE_SERVERNAME=test -v `pwd`/www:/var/www apache:ubuntu
FROM 指定所建立鏡像的基礎鏡像
MAINTAINER 指定維護者信息
RUN 運行指令
CMD 指定啓動容器時默認執行的命令
LABEL 指定生成鏡像的元數據標籤信息
EXPOSE 聲明鏡像內服務所監聽的端口
ENV 指定環境變量
ADD 複製指定的<src>路徑下的內容到容器中的<dest>路徑下,<src>能夠爲URL,若是爲tar文件,會自動解壓到<dest>路徑下
COPY 複製本地主機的<src>路徑下的內容到鏡像中的<dest>路徑下,通常狀況下推薦使用COPY,而不是ADD
ENTRYPOINT 指定鏡像的默認入口
VOLUME 建立數據卷掛載點
USER 指定運行容器時的用戶名或者UID
WORKDIR 配置工做目錄
ARG 指定鏡像內使用的參數(例如版本號信息)
ONBUILD 配置當所建立的鏡像做爲其餘鏡像的基礎鏡像時,所執行的建立操做指令。
STOPSIGNAL 容器退出的信號值
HEALTHCHECK 如何進行健康檢查
SHELL 指定使用shell時的默認shell類型
方式一:
安裝openssh服務,基於Commit方式
運行容器:
docker run -it ubuntu:14.04 /bin/bash
apt-get update
apt-get install openssh-server -y
mkdir -p /var/run/sshd
啓動ssh服務
/usr/sbin/sshd -D &
此時查看容器的22端口
netstat -tunlp
修改SSH服務的安全登錄配置,取消pam登錄限制
sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
建立.ssh目錄,並將須要登錄的公鑰信息(通常爲本地主機用戶目錄下的.ssh/id_rsa.pub文件,可由ssh-keygen -t rsa 命令生成)複製到authorized_keys文件中
mkdir root/.ssh
vi /root/.ssh/authorized_keys
建立自動啓動SSH服務的可執行文件run.sh
vi /run.sh
#!/bin/bash
/usr/sbin/sshd -D
添加權限
chmod +x run.sh
退出容器 exit
保存鏡像
docker commit 容器id sshd:ubuntu
在宿主機就可使用 ssh 宿主機ip -p 10022 實現免密登錄容器了。
方式二:
安裝openssh,使用Dockerfile建立
1:首先建立工做目錄
mkdir sshd_ubuntu
2:建立Dockerfile和run.sh文件
touch Dockerfile run.sh
3:編寫run.sh
#!/bin/bash
/usr/sbin/sshd -D
4:在宿主機上生成SSH密鑰對,並建立authorized_keys文件
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >authorized_keys
5:編寫Dockerfile文件
#設置繼承鏡像
FROM ubuntu:14.04
#做者信息
MAINTAINER docer_user (binbin.zhang)
#下面開始 運行更新命令
RUN apt-get update
#安裝ssh服務
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.sshd
#取消pam限制
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
#複製配置文件到相應位置,並賦予腳本可執行權限
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#開放端口
EXPOSE 22
#設置自啓動命令
CMD ["/run.sh"]
6:建立鏡像
在sshd_ubuntu文件夾下執行:
docker build -t sshd:dockerfile .
看到Successfully built $鏡像id ,說明建立成功
7:測試鏡像,運行容器,經過 docker logs 容器id 可查看啓動log
docker run -d -p 10122:22 sshd:dockerfile
8:在宿主機執行 ,192.168.22.147是個人宿主機ip
ssh 192.168.22.147 -p 10122
成功登錄到容器後,說明鏡像建立沒問題。
1:建立一個apache_ubuntu的工做目錄,在其中建立Dockerfile文件,run.sh文件和sample文件夾
mkdir apache_ubuntu
cd apache_ubuntu
touch Dockerfile run.sh
mkdir sample
2:編寫Dockerfile文件
#設置繼承自用戶建立的sshd鏡像
FROM sshd:dockerfile
#建立者的基本信息
MAINTAINER docker_user (binbin.zhang)
#設置環境變量,全部操做都是非交互式的
ENV DEBIAN_FRONTEND noninteractive
#安裝
RUN apt-get -yq install apache2 &&\
rm -rf /var/lib/apt/lists/*
#設置系統的時區,由於在web應用中常常會用到時區這個系統變量。
RUN echo "Asia/Shanghai" > /etc/timezone && \
dpkg-reconfigure -f noninteractive tzdata
##添加用戶的腳本,並設置權限,這會覆蓋以前放在這個位置的腳本
ADD run.sh /run.sh
RUN chmod 755 /*.sh
#添加一個示例的web站點,刪掉默認安裝在apache文件夾下面的文件,並將用戶添加的示例用軟鏈接 連接到 /var/www/html 目錄下面
RUN mkdir -P /var/lock/apache2 && mkdir -P /app && rm -fr /var/www/html && ln -s /app /var/www/html
copy sample/ /app
#設置apache 相關的一些變量,在容器啓動的時候可使用-e參數替代
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_SERVERADMIN admin@localhost
ENV APACHE_SERVERNAME localhost
ENV APACHE_SERVERALIAS docker.localhost
ENV APACHE_DOCUMENTROOT /var/www
#設置端口
EXPOSE 80
WORKDIR /app
CMD ["/run.sh"]
3:在sample文件夾下新建index.html
<!DOCTYPE html>
<html>
<body>
<p>Hello Docker!</p>
</body>
</html>
4:編寫run.sh腳本,腳本內容是啓動apache服務
#!/bin/bash
exec apache2 -D FOREGROUND
5:編譯鏡像
docker build -t apache:ubuntu .
5:運行鏡像 經過 docker logs 容器id 可查看啓動log
docker run -d -P apache:ubuntu
6:測試
ssh 127.0.0.1:80
1:建立工做目錄
mkdir nginx_ubuntu
cd nginx_ubuntu
touch Dockerfile run.sh
2:編寫Dockerfile文件
#設置繼承自建立的sshd鏡像
FROM sshd:dockerfile
#設置建立者的基本信息
MAINTAINER binbin (bbz17640380550@163.com)
#安裝nginx,設置nginx以非daemon啓動
RUN \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx
#設置系統時區
RUN echo "Asia/Shanghai" > /etc/timezone && \
dpkg-reconfigure -f noninteractive tzdata
#添加腳本,設置權限。
ADD run.sh /run.sh
RUN chmod 755 /*.sh
#定義能夠被掛載的目錄,分別是虛擬主機的掛載目錄,證書目錄,配置目錄和日誌目錄
VOLUME ["/etc/nginx/sites-enabled","/etc/nginx/certs","/etc/nginx/conf.d","/var/log/nginx"]
#定義工做目錄
WORKDIR /etc/nginx
#定義輸出命令
CMD ["/run.sh"]
#定義輸出端口
EXPOSE 80
EXPOSE 443
3:編寫run.sh腳本文件
#!/bin/bash
/usr/sbin/sshd &
/usr/sbin/nginx
4:編譯建立nginx鏡像
docker build -t nginx:stable .
5:運行nginx鏡像 經過 docker logs 容器id 可查看啓動log
docker run -d -P nginx:stable
6:查看自動映射的端口
docker ps
7:檢查
curl 127.0.0.1:$映射80的端口
Dockerfile 安裝Tengine 淘寶的加強版nginx
1:建立工做目錄:
mkdir tengine_ubuntu
touch Dockerfile
2:編寫Dockerfile文件
#繼承咱們建立的sshd鏡像
FROM sshd:dockerfile
#建立者信息
MAINTAINER binbin.zhang(bbz17640380550@163.com)
#安裝編譯環境
RUN apt-get install -y build-essential debhelper make autoconf automake patch
RUN apt-get install -y dpkg-dev fakeroot pbuilder gnupg dh-make libssl-dev libpcre3-dev git-core
#設置系統時區
RUN echo "Asia/Shanghai" > /etc/timezone && \
dpkg-reconfigure -f noninteractive tzdata
#建立Nginx用戶
RUN adduser --disabled-login --gecos 'Tengine' nginx
# tengine 安裝的shell腳本
WORKDIR /home/nginx
RUN su nginx -c 'git clone https://github.com/alibaba/tengine.git'
WORKDIR /home/nginx/tengine
RUN su nginx -c 'mv package/debian .'
ENV DEB_BUILD_OPTIONS nocheck
RUN su nginx -c 'dpkg-buildpackage -rfakeroot -uc -b'
WORKDIR /home/nginx
RUN dpkg -i tengine_2.0.2-1_amd64.deb
#定義掛載的目錄
VOLUME ["/data","/etc/nginx/sites-enabled","/var/log/nginx"]
#讓Nginx運行在非Daemo模式
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
#定義工做目錄
WORKDIR /etc/nginx
#添加腳本,設置權限。
ADD run.sh /run.sh
RUN chmod 755 /*.sh
#定義輸出命令
CMD ["/run.sh"]
#定義輸出端口
EXPOSE 80
EXPOSE 443
3:編寫run.sh文件
#!/bin/bash
/usr/sbin/sshd &
/usr/sbin/nginx
4:編譯dockfile文件 建立鏡像
docker build -t nginx:alibaba .
5:啓動容器,並查看端口映射信息 經過 docker logs 容器id 可查看啓動log
docker run -d -P nginx:alibaba
docker ps
6:測試容器
curl 127.0.0.1:映射80的端口
1:準備jdk1.8,和tomcat8.5
2:建立工做目錄
mkdir tomcat8.5_jdk1.8
touch Dockerfile run.sh
將jdk1.8和tomcat8.5 cp 到此目錄
此時目錄結構,Dockerfile apache-tomcat-8.5.32 jdk1.8.0_181 run.sh
3:編寫Dockerfile文件
#繼承咱們建立的sshd鏡像
FROM sshd:dockerfile
#做者信息
MAINTAINER binbin.zhang(bbz17640380550@163.com)
##設置環境變量,全部操做都是非交互式的
ENV DEBIAN_FRONTEND noninteractive
#設置系統時區
RUN echo "Asia/Shanghai" > /etc/timezone && \
dpkg-reconfigure -f noninteractive tzdata
#安裝跟Tomcact用戶認證相關的軟件
RUN apt-get install -yq --no-install-recommends wget pwgen ca-certificates && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
#設置tomcat的環境變量,如有其餘的環境變量須要設置,也能夠在這裏添加
ENV CATALINA_HOME /tomcat
ENV JAVA_HOME /jdk
#複製tomcat 和 jdk 文件到鏡像中
ADD apache-tomcat-8.5.32 /tomcat
ADD jdk1.8.0_181 /jdk
ADD run.sh /run.sh
RUN chmod +x /*.sh
RUN chmod +x /tomcat/bin/*.sh
RUN chmod +x /jdk/bin/*
EXPOSE 8080
CMD["/run.sh"]
4:編寫run.sh
#!/bin/bash
/usr/sbin/sshd -D &
exec ${CATALINA_HOME}/bin/catalina.sh run
5:編譯dockfile文件,建立鏡像
docker build -t tomcat8.5:jdk1.8
6:啓動tomcat容器 經過 docker logs 容器id 可查看啓動log
docker run -d -P tomcat8.5:jdk1.8
7:查看端口映射
docker ps
docker pull rabbitmq:management
docker run -d --name rabbit -p 15672:15672 -p 5672:5672 -v /var/lib/rabbitmq:/var/lib/rabbitmq -v /var/log/rabbitmq:/var/log/rabbitmq rabbitmq:management
Docker 安裝 Jenkins ps(-u 是講執行命令的用戶權限內置到容器裏,0是root用戶的id -d是以守護進程方式運行,-p綁定端口, -v掛載宿主機文件夾)
docker run -d -u 0 -p 8081:8080 -p 50000:50000 -v /var/lib/jenkins:/var/jenkins_home jenkins
Docker 安裝GitLab
docker run -d --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 23:23 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /src/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
登陸用戶名:root
1:docker run --name redis-container -d redis
2:進入redis容器
docker exec -it 容器id /bin/bash
3:查看容器運行時間和內存情況,環境變量(命令分別是:uptime,free,env)
4:運行redis 客戶端
docker run -it --link redis-container:db --entrypoint redis-cli redis -h db
利用Linux操做系統的命名空間的特性,Docker實現了每一個容器都有本身的命名空間,運行在其中的應用都像是在獨立的操做系統環境中同樣。命名空間機制保證了容器之間彼此互不影響。
1-1:進程命名空間:
每一個進程命名空間有一套本身的進程號管理方法。進程命名空間是一個父子關係的結構,子空間中的進程對於父空間的進程是可見的。
例如查看Docker 主進程的進程號是8137
ps -ef|grep docker
root 8137 1200 0 08:51 ? 00:00:00 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/adfd7a83fae0e705d49732a8178bdfc153bfa4d45aad69461e4c18aa42c9fbfe -address /var/run/docker/containerd/docker-containerd.sock -containerd-binary /usr/bin/docker-containerd -runtime-root /var/run/docker/runtime-runc
此時運行一個容器例如:docker run -d ubuntu /bin/sh -c "while true:do echo hello world;sleep 1;done"
查看新建容器的進程,能夠看到當前的進程的父進程號是8137
ps -ef|grep while
root 8153 8137 0 08:51 ? 00:00:00 /bin/sh -c while true;do echo hello world;sleep 1;done
1-2:網絡命名空間
物理主機的物理網卡 經過網橋的方式將每一個容器的虛擬網口 鏈接在一塊兒。實現了網絡命名空間的隔離
1-3:IPC命名空間
Linux常見的進程間交互方法-》IPC ,容器中進程交互也採用了IPC,同一個IPC命名空間內的進程能夠彼此可見,容許進行交互,不一樣空間的進程則沒法交互。
1-4:掛載命名空間
掛載命名空間容許不一樣命名空間的進程看到的文件結構不一樣,這樣每一個命名空間中的進程所看到的文件目錄彼此被隔離。
1-5:UTS命名空間
容許每一個容器擁有獨立的主機名和域名,從而能夠虛擬出一個獨立主機名和網絡空間的環境,默認狀況下容器ID,就是容器的主機名。
1-6:用戶命名空間
每一個容器能夠有不一樣的用戶和組id,每一個容器內部均可以有root用戶,但和宿主機的root不在一個命名空間。
控制組是Linux內核的一個特性。主要用來對共享資源的隔離,限制,審計等等、
2-1:資源限制
主要是能夠限制容器使用宿主機內存的上限
2-2:優先級
能夠指定某個容器使用cpu的優先級。
2-3:資源審計
用來統計系統實際上把多少資源用到合適的目的上,可使用cpuacct子系統記錄某個進程使用的cpu時間
2-4:隔離
爲組隔離命名空間,這樣一個組不會看到另外一個組的進程,網絡鏈接和文件系統
2-5:控制C
掛起,恢復,重啓動等操做。
安裝Docker後,用戶能夠在 /sys/fs/cgroup/memory/docker 目錄下看到對Docker組應用的各類限制。
好比:memory_limit_in_bytes 文件是配置對Docker用戶組中的全部進程使用的物理內存總量的限制,能夠改變文件內容進行對內存總量限制的修改。
Docker鏡像自身是由多個文件層組成,每一層有惟一編號。
經過docker history ubuntu:14.04 能夠看到ubuntu14.04鏡像 有哪些層組成的。
Docker全部的存儲都在Docker目錄下,以ubuntu爲例,在/var/lib/ubuntu 其中aufs目錄是文件系統所在,aufs中存儲着Docker鏡像相關數據和信息。
新版本的docker文件系統已經被Overlay取代了。
網絡建立的過程
1:建立一對虛擬接口,分別放到本地主機和新容器的命名空間上。
2:本地主機的一端虛擬藉口鏈接到默認的docker0的網橋上,並具備一個以veth開頭的惟一名字。例如veth1234
3:容器一端的虛擬接口將放到新建立的容器中,並修更名字做爲eth0,這個接口只在容器的命名空間可見
4:從網橋可用地址段中獲取一個空閒地址分配給容器的eth0,並配置默認路由網關爲docker0網卡的內部接口docker0的ip地址。
Docker 搭建私有倉庫幾大要素 這部分我沒有詳細實踐,具體可自行百度,或者查看《Docker技術入門與實戰》第18章
使用Nginx代理私有倉庫的容器地址,讓其餘機器能夠訪問私有倉庫。
對私有倉庫進行用戶名密碼認證(基於Nginx)
證書認證,可經過openssl本身生成證書或者從網上申請證書。我的以爲 通常公司不須要證書認證。
1:Docker Bench:按照CIS Docker 規範包括主機配置,Docker引擎,配置文件權限,鏡像管理,容器運行時環境,安全項等六大方面進行掃描檢查。
使用方法:docker run -it --net host --pid host --cap-add audit_control -v /var/lib:/var/lib -v /var/run/docker.sock:/var/run/docker.sock -v /usr/lib/systemd:/usr/lib/systemd -v /etc:/etc --label docker_bench_security docker/docker-bench-security
2:clair:對容器的文件層進行掃描從而發現漏洞 使用方法不介紹了,自行百度吧很簡單。
這部分我也不作詳細解釋了。
正常狀況下使用docker 建立容器時 默認的網絡便可。 若是真的須要配置容器的DNS 主機名或者網橋之類的。看看《Docker技術入門與實戰》的第20章吧,當工具書來使用就能夠了。
實現這個功能,須要利用libnetwor插件,在libnetwork的網絡方案中,要實現跨主機容器網絡須要一個網絡信息管理機制,一個鍵值數據庫便可。例如,Consul,Etcd,Zookeeper等工具均可以知足。
以Consul爲例,啓動一個progrium/consul容器,並映射服務到本地的8500端口
docker run -d -p 8500:8500 -h consul progrium/consul -server -bootstrap
啓動兩臺Docker主機n1和n2,分別安裝好最新的docker-enginne ,確保這兩臺主機之間能夠經過IP地址互相訪問,另外,都能訪問到數據庫節點的8500端口。
配置主機的Docker服務啓動選項:
DOCKER_OPTS=「$DOCKER_OPTS –cluster-store=consul://<CONSUL_NODE>:8500 --cluster-advertise=eth0:2376」
重啓docker服務
sudo service doker restart
在任意一個節點上建立網絡multi,例如在n1上執行命令。
docker network create -d overlay multi
建立成功後,能夠同時在n1和n2上查看到新的網絡multi的信息
docker network ls
1:在n1上啓動一個容器c1,經過--net選項制定連接到multi網絡上,查看網絡信息,其中一個接口eth0已經連接到multi的網絡上。
在n1上執行:docker run -it –name=c1 –net=multi busybox
2:在n2上啓動一個容器c2,一樣鏈接到multi網絡上,經過ping c1進行測試
在n2上執行:docker run -it –name=c2 -net=multi busybox
ping c1
若是能夠ping通,說明跨主機容器網絡已經構建完成了。
Docker Machine負責使用Docker的第一步,在多種平臺上快速安裝Docker環境。它支持多種平臺,讓用戶能夠在很短期內搭建一套Docker主機集羣。
Docker Compose它可讓用戶經過編寫一個簡單的模板文件,快速的建立和管理基於Docker容器的應用集羣
Docker Swarm提供容器集羣服務,使用它能夠將多個Docker 主機封裝爲單個大型的虛擬主機,快速打造一套容器雲平臺。
Mesos項目是源自UC Berkeley對集羣資源進行抽象和管理的開源項目,相似於操做系統內核,用戶可使用它很容易地實現分佈式應用的自動化調度。
打算詳細看一下《Kubernetes 權威指南》 我有pdf,若有須要私信我吧 bbz17640380550@163.com