1. 程式人生 > >docker命令詳解、宿主機和容器通訊原理的問題

docker命令詳解、宿主機和容器通訊原理的問題

我的筆記本是window7系統,為了模擬伺服器的環境,安裝了虛擬機器centOS7。

前戲準備

  •     一些操作都需要root許可權操作,從使用者角色轉換到root角色命令:sudo su
  •     啟動docker服務:service docker start
  •     (docker所有的操作,都是基於啟動docker服務,不然會報:Cannot connect to the Docker daemon. Is the docker daemon running on this host?
  •     檢視映象列表:docker images
  •     檢視已啟動的容器列表:docker ps
  •     檢視所有的容器列表:docker ps -a
  •     簡單的開啟一個容器:docker start 容器ID
  •     進入容器:docker attach 容器ID

1.首先在宿主機(虛擬機器centOS7)上安裝docker:

參考菜鳥教程:http://www.runoob.com/docker/centos-docker-install.html

2.之後拉取Ubuntu映象:

參考:http://blog.csdn.net/gaoxinghuan/article/details/56352060

3.下載jdk/tomcat安裝包,並且從宿主機(虛擬機器)掛載到容器中:

3.1 centOS把原始檔夾(/home/xiaoxie/javawebTool/)下的安裝包複製到-->目標資料夾(/opt/soft/)下:

cp -Rf /home/xiaoxie/javawebTool/* /opt/soft/

(cp   -Rf     原始檔夾下的所有檔案     目標資料夾)

3.2 執行映象(映象id),並將宿主機/opt/soft目錄掛載到容器的/opt/soft上 :

    docker run -i -t -v /opt/soft/:/opt/soft/ 9b9cb95443b5 /bin/bash

(docker run -i -t -v 宿主機檔案目錄 : 容器檔案目錄  映象id  /bin/bash)

4.在容器內安裝jdk和tomcat:

4.1 安裝jdk到/opt/jdk:

    建立資料夾jdk:mkdir /opt/jdk

                          (mkdir  建立的資料夾)

    解壓jdk安裝包到/opt/jdk檔案下:tar -zxvf jdk-8u161-linux-x64.tar.gz -C  /opt/jdk

                                                     (tar -zxvf      要解壓檔案的全路徑        -C   安裝路徑)         

    centOS在docker中配置jdk的環境變數:

    第一步:echo -e "\n\nexport JAVA_HOME=/opt/jdk/jdk1.8.0_161" | tee -a /etc/profile


    第二步:echo -e "\nexport PATH=\$PATH:\$JAVA_HOME/bin" | tee -a /etc/profile

 

    第三步:source /etc/profile 

    最後檢查:java -version

 

4.2 安裝tomcat到/opt/tomcat:

    建立資料夾tomcat:mkdir tomcat

    解壓tomcat安裝包:tar -zxvf apache-tomcat-7.0.85.tar.gz -C /opt/tomcat/

5.把配置好jdk、tomcat的容器commit成映象,方便以後使用:

docker commit -m "first ubuntu" -a "xiaoxie" efa4ec8b663c docker.javaweb
(docker commit  -m "提示資訊"      -a"作者"          容器id             映象名稱)

6.啟動新生成的映象,把宿主機器的80埠對映到容器的8080埠

(這一步導致,訪問ip+埠號(8080)變成了直接訪問域名,因為宿主機器的80埠是訪問web的預設埠。)

    docker run -it  --name  tomcat  -p  80:8080  docker.javaweb  /bin/bash

(docker run -it  --name 容器名稱 -p 宿主機埠  :  容器的埠  映象名稱   /bin/bash)

啟動tomcat:

    配置環境:source /etc/profile

    進入到tomcat的bin目錄:cd /opt/tomcat/apache-tomcat-7.0.85/bin/

    啟動tomcat:./startup.sh

訪問tomcat:
    在宿主機器上訪問查詢IP埠:ip addr

    (用來查詢訪問tomcat的域名)

tomcat訪問結果截圖:

---------------------------------------------------------------------------打完收工。

但有了疑惑,宿主機如何找到容器中的埠,或者說,宿主機和容器是如何通訊的?

7.宿主機和容器是如何通訊的:

給出流程圖:

如有不懂,請參考:點選開啟連結,此流程圖便是閱讀這篇知乎文章,根據自己理解所畫。

---------------------------------------------------------------------------不關注我“象話”嗎?

如有疑惑,請評論留言。

如有錯誤,也請評論留言。

相關推薦

docker命令宿主容器通訊原理的問題

我的筆記本是window7系統,為了模擬伺服器的環境,安裝了虛擬機器centOS7。 前戲準備     一些操作都需要root許可權操作,從使用者角色轉換到root角色命令:sudo su     啟動docker服務:service docker start    

docker命令

docker 雲計算 虛擬化 Docker常用命令詳解 docker ps 查看當前正在運行的容器 docker ps -a 查看所有容器的狀態 docker search seanlo 在docker index中搜索image(search) docker start/stop id/nam

rsync命令rsync用ssh隧道方式同步

命令 針對 添加 ssh root res 方式 author 設備文件 對待 ● rsync格式安裝命令 yum install -y rsync與scp的區別:scp復制為完全覆蓋,rsync為增量同步,只同步修改過的數據。rsync命令格式如下: rsync 選項

syslog日誌服務器安裝卸載如何安裝卸載EventLog Analyzer

技術 src 如何 RoCE analyze sys ESS watermark 詳解 syslog、日誌服務器安裝、卸載詳解、如何安裝和卸載EventLog Analyzer

docker 命令

共享 ups beat 擴展 img 定義 而已 其它 就會 Docker是一個用了一種新穎方式實現的超輕量虛擬機,在實現的原理和應用上還是和VM有巨大差別,專業的叫法是應用容器(Application Container)。(我個人還是喜歡稱虛擬機) Docker應用容器

Docker-使用數據卷在宿主容器間的數據共享

功能 gif spa pull 找到 是否 運行命令 如果 res 場景一:現在用Docker創建了N個容器,但是這些容器之間需要數據共享,這個時候我們應該怎麽辦?[參考第四步] 場景二:docker創建了一個容器並進入容器,添加了一些定制功能,此時除了用docker

Docker 命令-容器生命週期管理(RUN)

一、概況 run: 建立一個新的容器並執行一個命令; 二、RUN詳情 2.1 語法 $ sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 具體版本特性,可通過命令檢視引數說明 $ sudo docke

mongoDB的Find分頁排序遊標

1.指定返回的鍵    db.[documentName].find ({條件},{鍵指定})         資料準備persons.json var persons = [{  name:"jim",  age:25,  email:"[email prote

iOS "Warning" No such file or directory解決方案原理

最近用XCode做了一個靜態庫,在自己電腦上別的App project中編譯使用沒有任何問題,但是傳給別的同事使用在編譯的時候就會出現類似於下面警告。 warning: (i386) /UsersLibrary/Developer/Xcode/DerivedData/ProjectName-ebyadedaa

Flume中階應用——啟動命令元件範例說明事務說明

flume啟動命令詳解 Usage: ./flume-ng <command> [options]... commands: help display this help text #顯示幫助資訊 agent

docker學習7--宿主容器時間不一致問題

    啟動一個以centos為基礎的映象,進入容器內date '+%Y-%m-%d %H:%M:%S'檢視時間,發現容器時間和宿主機不一致。     一臺宿主機可以有多個docker容器,宿主機的

docker命令與運用

docker <option> attach Attach to a running container 進入一個執行的容器執行命令;Docker attach可以attach到一個已經執行的容器的stdin;如果從這個stdin中exit,會導致容器的停止

基於接口回調JUC中CallableFutureTask實現原理

cnblogs blog 異步編程 但是 迷糊 對象 extend href 增加 Callable接口和FutureTask實現類,是JUC(Java Util Concurrent)包中很重要的兩個技術實現,它們使獲取多線程運行結果成為可能。它們底層的實現,就是基於接口

基於介面回撥JUC中CallableFutureTask實現原理

Callable介面和FutureTask實現類,是JUC(Java Util Concurrent)包中很重要的兩個技術實現,它們使獲取多執行緒執行結果成為可能。它們底層的實現,就是基於介面回撥技術。介面回撥,許多程式設計師都耳熟能詳,這種技術被廣泛應用於非同步模組的開發中。它的實現原理並不複雜,但是對初學

dnsmasq以及在openstack容器中的使用

dnsmasq簡介 瞭解Dnsmasq,還是從研究openstack neutron網路開始的,在openstack的網路中,dnsmasq為指定網路提供dhcp和dns功能,後臺起的程序如下: dnsmasq --no-hosts --no-resolv --stric

open vswitch實現不同宿主容器通訊(centos7)

實驗環境: 機器一:192.168.122.222 安裝docker,open vswitch 機器二:192.168.122.247 安裝docker,open vswitch ip a檢視主機的docker0介面為:172.17.0.1/16 一、部署主機

croncrontab命令 crontab 每分鐘每小時每天每週每月每年定時執行 crontab每5分鐘執行一次

cron機制        cron可以讓系統在指定的時間,去執行某個指定的工作,我們可以使用crontab指令來管理cron機制crontab引數        -u:這個引數可以讓我們去編輯其他人的crontab,如果沒有加上這個引數的話就會開啟自己的crontab 

linux命令之dd命令/dev/zero/dev/null

主要內容來自:http://www.cnblogs.com/dkblog/archive/2009/09/18/1980715.html dd 是 Linux/UNIX 下的一個非常有用的命令,作用是用指定大小的塊拷貝一個檔案,並在拷貝的同時進行指定的轉換(convert

Redis系列(八):資料結構List雙向連結串列中阻塞版本之BLPOPBRPOPLINDEXLINSERTLRANGE命令

1.BRPOP、BLPOP BLPOP: BLPOP 是阻塞式列表的彈出原語。 它是命令 LPOP 的阻塞版本,這是因為當給定列表內沒有任何元素可供彈出的時候, 連線將被 BLPOP 命令阻塞。 當給定多個 key 引數時,按引數 key 的先後順序依次檢查

Docker常用命令

nbsp 詳解 .cn 本地 test 並且 www 更多 top docker ps 查看當前正在運行的容器 docker ps -a 查看所有容器的狀態 docker start/stop id/name 啟動/停止某個容器 docker attach id 進