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中Callable和FutureTask實現原理
cnblogs blog 異步編程 但是 迷糊 對象 extend href 增加 Callable接口和FutureTask實現類,是JUC(Java Util Concurrent)包中很重要的兩個技術實現,它們使獲取多線程運行結果成為可能。它們底層的實現,就是基於接口
基於介面回撥詳解JUC中Callable和FutureTask實現原理
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 一、部署主機
cron和crontab命令詳解 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雙向連結串列中阻塞版本之BLPOP、BRPOP和LINDEX、LINSERT、LRANGE命令詳解
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 進