1. 程式人生 > >我眼中的docker 如何啟動多個docker任務容器

我眼中的docker 如何啟動多個docker任務容器

docker類式於為沙盒中執行的執行緒,可以看做是一個簡易的linux系統,容器的ID與名稱都是唯一的,可以通過ID的前3位進行訪問這個容器,Docker 使用一個叫做 UnionFS 的層級檔案系統進行映象操作。容器對映象檔案的所有操作均是在虛擬出的“改動層”上進行的,與docker相關的本地資源都放在/var/lib/docker/目錄下。Docker的理念是一個容器只執行一個服務,從宿主機進入容器是通過exec命令進去的,但是如果要從遠端進入,除了給容器安裝相應的ssh服務,目前沒有更好的辦法。

        docker提供了資料卷-v引數實現,用於儲存資料,比如資料庫日誌檔案等,需要將容器的目錄掛在在宿主機上,這樣在宿主機上,就可以看到各個容器裡面的資料資訊,但是有一個前提,你需要把容器什麼路徑給掛載出去,這個時候,可以通過docker inspect 容器/映象 命令檢視該映象的相關路徑資訊,比如nginx,你需要進入那個nginx容器裡面,檢視配置conf.xml檔案,配置反向代理,配置好後,記得要使用docker commit命令儲存一下,否則你的所有修改,將在下一次啟動時將會丟失,我配置mysql的時候,看到預設提供的賬戶密碼,突然間就不知道該怎麼用,因為有些賬戶比如root只能本地訪問。遠端訪問的時候 只能用admin,但是我只用admin賬戶的時候,提示錯誤,要我必須制定root密碼-e  MY-ROOT-PASSWORD,oracle的遠端訪問,還沒有用過,如果實際應用的話,建議還是自己寫一個dockfile比較好,至少掛載目錄都可以確定。

      如何啟動多個docker容器為系統服務,可以參照linux中指令碼來搞。(1)、root許可權編輯/etc/rc.d/rc.local     cd /etc/rc.d/    vi rc.local  /autoStart.sh (2)、在這個檔案加上你要執行的指令碼,全部內容如下:#!/bin/sh   autoStart.sh    docker start mysql  dockerui nginx redis.然後賦予這個指令碼許可權,chomd 777 /autoStart.sh

        dockerfile一般由基礎映象資訊,維護者資訊,映象操作指令和容器啟動命令四部分組成,可以通過docker build -t   標籤名稱 dockefile的路徑 命令進行建立映象。然後使用docker run  --name   映象別名 映象名稱

可以通過exec命令進入這個容器中進行訪問,退出用exec命令

(HOST) # docker exec -it container-id/container-name bash
(CONTAINER) [email protected]:/# echo hello docker > /message.txt
(CONTAINER) [email protected]:/# cat /message.txt
hello docker
(CONTAINER) [email protected]:/# exit

          每次執行 docker run 命令的時候,Docker 都會指定新建容器,並用名稱空間進行隔離,對比起 ID,容器的名稱更加易讀。你也可以在 docker run 的時候用 --name 引數指定容器的名稱。

             容器之間相互通訊,可以通過--link指令進行,容器與宿主機之間的檔案操作,有兩種方式,一種是通過-v 把容器裡面的資料掛載到宿主機上面(一般安裝資料庫需要這樣的操作)

docker run -d -p 9999:8080  -p 1522:1521 -v /data/data/:/data  -v /data/log:/log --name oracle   wnameless/oracle-xe-11g

譬如我要啟動一個CentOS容器,宿主機的/test目錄掛載到容器的/soft目錄,可通過以下方式指定:

# docker run -it -v /test:/soft centos /bin/bash

這樣在容器啟動後,容器內會自動建立/soft的目錄。通過這種方式,我們可以明確一點,即-v引數中,冒號":"前面的目錄是宿主機目錄,後面的目錄是容器內目錄。另外一種是通過cp命令,實現檔案之間的複製, 從主機複製到容器sudo docker cp   host_path     containerID:container_path

從容器複製到主機sudo docker cp    containerID:container_path    host_path

        如何給容器固定一個IP(安裝資料庫中常常需要這樣的設定),可以使用pipwork工具實現。docker的圖形管理頁面工具有很多,常見的有dickerUI、seagull等等。

        如何備份一份容器檔案,有兩種方式,用export這種方式匯出的資料不全、container-backup為備份程序所對應的映象的名稱,~/container-backup.tar 意思為主目錄下,名稱為container-backup.tar ,詳細可參看這篇文章

docker commit -p contain_Id container-backup
docker save -o ~/container-backup.tar container-backup
docker load -i ~/container-backup.tar

       檢視一個dockflie檔案所有的資訊 可以通過使用docker   inspect   contan-id命令檢視(檢查映象或者容器的引數,預設返回 JSON 格式)比如檢視宿主機的掛載目錄


     為了更好的管理映象,可以在本地搭建一個私有的倉庫,通過registry映象建立(首先先docker pull redistry),預設目錄是在/tmp/registry下面

docker run -d -p 5000:5000 -v /zssHome:/tmp/registry  --name  House  registry

這將自動下載,並啟動一個registry容器,此時在本地將啟動一個私有倉庫服務,監聽埠為5000,具體操作細節,請參考 Docker學習筆記 — Docker私有倉庫搭建

centos系統中docker配置啟動檔案在 /etc/sysconfig/docker裡面新增命令即可,

[[email protected] ~]# vim /etc/sysconfig/docker
修改此行
OPTIONS='--selinux-enabled --insecure-registry 192.168.0.109:5000'        //新增私有倉庫地址
[[email protected] ~]# service docker restart
Redirecting to /bin/systemctl restart  docker.service

參考教材:Docker技術入門與實戰、Spring  boot實戰

相關推薦

眼中docker 如何啟動docker任務容器

docker類式於為沙盒中執行的執行緒,可以看做是一個簡易的linux系統,容器的ID與名稱都是唯一的,可以通過ID的前3位進行訪問這個容器,Docker 使用一個叫做 UnionFS 的層級檔案系統進行映象操作。容器對映象檔案的所有操作均是在虛擬出的“改動層”上進行的,

docker工具之埠對映、容器互聯、封裝映象、啟動服務

1.埠對映 為什麼要埠對映? 在啟動容器時,如果不配置宿主機器與虛擬機器的埠對映,外部程式是無法訪問虛擬機器的, 因為沒有埠,所以需要進行埠對映。 埠對映的兩個關鍵詞: 埠對映有兩個關鍵詞-P -p 一個是大寫一個是小寫 通過run --help也可以看

docker一個映象建立例項啟動容器分配不同的埠號,達到高可用的目的

   利用一個映象去建立多個微服務例項,實現擴充套件服務的目的,主要難點是利用配置檔案分別啟動不同的例項,剛開始沒有搞清楚配置檔案和容器啟動的關係,被坑了很長時間程式碼其實很簡單,就是一個註冊服務中心,以開發環境配置檔案建立服務註冊中心,以測試環境配置服務註冊中心,使兩個服務

nginx+docker同一伺服器上部署docker實現負載均衡

在提到負載均衡的時候,大多數人都是想著幾臺伺服器甚至幾十臺伺服器組成一個群組 也就是橫向拓展伺服器來實現負載均衡吧 但是還有一種情況是縱向拓展 也就是當你的專案在一臺伺服器上佔用的資源很少,其實是可以在同一臺伺服器上部署多個專案來實現負載均衡的 這裡利用nginx+dock

同一個docker映象,如何拉起docker container?

環境: centos7,zabbix3.0 關鍵步驟: 1. 安裝docker yum install epel-release yum install docker 2. 安裝docker-compose sudo yum install

docker刪除相同IMAGE ID映象的檔案

  當我們指定版本和最新版本相同的時候,可能會有相同的IMAGE ID。 當我們指定IMAGE ID進行刪除時,因為IMAGE ID的映象存在多個,所以會存在提示: Error response from daemon: conflict: unable to del

Docker Compose 編排容器(單臺伺服器,安裝docker服務)

參考: https://blog.csdn.net/boling_cavalry/article/deta

docker鏡像部署lnmp開發環境

group process yun ora serve erro select sql_mod href 與其說是lnmp環境,還不如說是3個docker環境的mysql、php和nginx鏡像。下面我們將以依次按照mysql、php和nginx鏡像的順序描述它們的搭建過程

一個簡單的MapReduce示例(MapReduce任務處理)

.lib exceptio apr private util sum length reat lin 一、需求   有一個列表,只有兩列:id、pro,記錄了id與pro的對應關系,但是在同一個id下,pro有可能是重復的。   現在需要寫一個程序,統計一下每個id下有

啟動Tomcat 需要修改的端口

多個 connect 80端口 左右 http direct shu 是否 conn 轉載 不知道朋友們 有沒有遇到過 在一臺機器 上啟動多個Tomcat 的情況(別跟我說啟動一個,裏面多個項目就可以,這個我知道 )。 啟動時會有商品沖突,需要修改Tomcat 的端口: 我

【Appnium+C#+Winform自動化測試系列】一、獲取本機連接的設備、啟動Appnium和獲取本機啟動的Appnium

net 系列 () 定向 目的 res listening toa 路徑     本系列內容,準備根據所完成的項目為基線,一步一步的把整個設計和實現過程梳理。 先從基本的一些環境問題入手,梳理清楚關於手機設備和Appnium。因為我們在後面的建立Appnium連接時,需要

一臺機器啟動tomcat簡單配置

col shu class 運行 配置 多個tomcat dir http服務 nbsp 一臺機器啟動多個Tomcat只需要解決Tomcat端口沖突的問題。 相關配置:打開 Tomcat 目錄下 conf \ server.xml 共修改三處端口,分別是: <Ser

Linux下安裝啟動Mysql

blank 修改 知識庫 ati fault 了解 skip .aspx 需求 網上找了N多資料,沒有一個可以順利成功的,郁悶,可能是水平有限吧...!本人經過不斷的研究、測試,完整實現Linux下啟動兩臺MySQL,而且對mysql有了更深入的了解...廢話不多說,走著!

同一臺服務器,啟動redis實例

ports ping spa margin span wan opp clas then 該腳本放到/etc/init.d/下,命名為redis #!/bin/sh #chkconfig: 2345 10 90 #description: Startup and stop

idea啟動tomcat失敗

最大 項目 運行 本地 配置 部署 cat 安裝目錄 結果 Intellij idea中,為在本地調試兩個系統之間的調用,配置兩個本地tomcat server,設置不同的端口號,如8081和8082,Deploy中加入兩個系統各自的Artifact xxx:war, Ap

docker 啟動 centos 鏡像,容器會自動退出

min image 增加 ima nbsp 方式 .org red 內部   docker啟動centos鏡像有兩種版本可以解決自動退出的問題:   方式一: docker run -d -it 【image-ID】 /bin/sh      方式二:     在

單機上啟動elasticsearch實例

sse sysctl ofo 啟動文件 ping service sco tcp mit 使用elasticsearch的默認配置的話,一臺機器上只能啟動一個elasticsearch實例,下面是配置多實例的過程。1.環境介紹操作系統:centos7elasticsearc

在同一臺機器上啟動tomcat服務

技術 服務 target 們的 home default catalina server cat 一臺機器上啟動多個tomcat服務應用,能夠讓我們更好的測試下自己的分布式應用,下面簡單介紹下如何在一臺機器上開啟多個tomcat應用,其實會弄兩個,之後的多個都是一樣的了

appium+python自動化60-windows上同時啟動appium服務,讓android機器並行運行

pre tps yam rom 啟動app 技術分享 AI 如果 aapt 前言 做android自動化的時候,啟動一個appium服務,只能匹配一個手機去自動化執行。有時候想同一套代碼,可以在不同的手機上執行,測下app在不同手機上兼容性。 這就需要啟動多個appium服

docker - 啟動不了docker服務

啟動 mirror 解決 service 架構 roo ice pre -c 原因 因為docker是CS架構,Server方要配置好源,客戶端才能連接,服務才能開啟 解決辦法 1.切換到root用戶,su root.. 2.sudo vim /etc/docker/dae