linux ---docker篇

Docker

docker是什麼?

docker最初是dotCloud公司創始人Solomom Hykes在法國期間發起的一個公司內部項目,它是基於dotCloud公司多年雲服務技術的一次革新,並在2013年3月以Apache2.0受權協議開源,主要項目代碼在GitHub上進行維護...python

docker是linux容器的一種封裝,提供簡單易用的容器使用接口,它是最流行的linux容器解決方案.docker的接口很是簡單,用戶能夠方便的建立和銷燬容器,docker將應用程序的依賴,打包在一個文件裏面,運行這個文件就會生成虛擬容器,程序運行在虛擬容器裏,如同真實物理機上運行同樣,反正就是有了docker,就不用擔憂討厭的環境配置問題了!linux

爲何要用docker?

它做爲一種新興的虛擬化方式,Docker跟傳統的虛擬化方式相比具備衆多的優點.nginx

docker容器的優點

  • 更高效的利用系統資源
  • 更快速的啓動時間
  • 一直的運行環境
  • 持續交付和部署
  • 更輕鬆的遷移
  • 更輕鬆的維護和擴展

docker的生命週期

鏡像 (images)

Docker鏡像就是一個只讀的模板,鏡像能夠用來建立容器.docker提供了一個很簡單的機制來建立鏡像或更新現有鏡像,用戶甚至能夠從其餘人那裏下載已經作好的鏡像直接使用

容器 (container)

鏡像(image)和容器(container)的關係,就像面向對象中類和實例的關係同樣,鏡像是靜態定義的class ;容器是鏡像運行時的實體object

#容器隨時均可以被建立,暫停,銷燬,中止,每一個容器都是相互隔離的,保證安全的平臺,docker利用容器運行應用.

#咱們也能夠把容器看做簡易的linux環境.

倉庫 (repository)

倉庫是存放鏡像文件的場所,分爲公開倉庫(public)和私有倉庫(Private)

#最大的公開倉庫就是Docker Hub,存放了數量龐大的鏡像供用戶下載.

#用戶建立本身鏡像以後就可使用push命令將它上傳到公開或私有庫,這樣另一臺機器使用的時候,只須要從倉庫上pull下來便可  

#Docker倉庫和Git的概念相似,倉庫註冊服務器和GitHub這樣的代碼託管服務相似.

安裝docker(官網6步走)

1.卸載舊版本 # yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2. 設置儲存庫
   - 安裝依賴環境包 #yum install -y yum-utils \device-mapper-persistent-data \lvm2

   - 穩定存儲庫  #yum-config-manager \ --addrepo\https://download.docker.com/linux/centos/docker-ce.repo

3.安裝docker ce  #  yum install docker-ce docker-ce-cli containerd.io
    
4.添加鏡像加速器 # curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io

5. 啓動docker   #systemctl start docker

6.驗證docker可否正常使用  #  docker run hello-world

#舒適提示,若是想安裝特定版本,請在步驟3上稍做修改便可,以下:$ yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io   #注意這條命令是否是跟步驟3很像...嘿,本身感覺...
社區版ce 

docker經常使用命令

docker pull hello-world    #下載docker鏡像,產生容器示例

docker run  ubuntu      #運行docker鏡像,ubuntu系統

docker run -it ubuntu /bin/bush  #交互式運行ubuntu容器,進入容器空間內  參數解釋  -i  交互式的命令操做,-t開啓一個終端提供訪問,  /bin/bush  指定shell解釋器      

打包構建一個攜帶vim的contos鏡像文件web

1.docker run -it centos /bin/bush #先運行一個centos的基礎鏡像文件

2.yum install vim -y   #安裝vim

3.docker commit 1d5698b91178 (當前鏡像id)  lxf163/centos-vim #退出容器空間,提交這個容器,爲新的鏡像

導出/導入鏡像文件redis

docker save 94e814e2efa8     >    /opt/ubuntu.tar.gz   #導出

docker load  94e814e2efa8     <   /opt/ubuntu.tar.gz #導入鏡像,自動解壓縮

#---注意運行過docker鏡像後,會產生容器記錄;docker容器必須有後臺程序在運行,不然容器就退出---
docker image ls   /docker images    #二者都是查看鏡像

docker container ls /docker ps  #二者都是查看正在運行的容器進程

docker ps -a  查看全部的容器記錄

docker search centos    #查詢docker鏡像記錄

刪 (深思而行)

docker rm 容器id   # 刪除容器記錄

docker rm  `docker ps -aq`  # 批量刪除容器記錄,不推薦操做此命令

docker rm -f  `docker ps -aq`  #強制刪除全部容器記錄,包括正在運行的容器,慎用!!!

docker rmi  鏡像id   #刪除鏡像記錄

docker rmi  `docker images -aq` #批量刪除鏡像文件

docker tag 鏡像id  新的鏡像名  #修改docker鏡像名,tag標記名

docker鏡像經常使用命令

docker images   #查看全部本級鏡像

docker pull redis   # 獲取新的redis鏡像

docker  search nginx  #搜索nginx 的鏡像

容器相關docker

docker  start/stop  容器id   #啓/停docker容器

docker run -it --rm 94e /bin/bash  # --rm運行容器,退出後,刪除容器記錄

docker run  --name  mynginx  881  /bin/bash  #運行容器後給其命名

docker run -d centos /bin/sh -c "while true;do echo hello centos; sleep 1;done" #後臺不斷運行一個shell語句  -d後臺運行, -C指定一個shell語句  

docker logs 容器id    #查看容器空間內的日誌 !!!
docker logs -f   容器id   #不間斷打印容器內日誌信息

docker exec -it 容器id   /bin/bash  # 進入正在運行的容器空間

 啓動容器的方式

啓動容器的方式有兩種:

#1.基於鏡像新建一個容器並啓動,也就是新建一個容器     docker run nginx
#2.在處於(stopped)中止狀態下的容器從新啓動,利用原來啓動過的容器id啓動.  docker start as5

#由於Docker的容器太過於輕量級,大部分用戶都是隨時刪除,隨時建立.

外部訪問容器

在容器中能夠運行網絡應用,可是要讓外部也能夠訪問這些應用,能夠經過-P 和-p參數進行端口映射!!!shell

docker的端口映射

-P  #大寫P參數會隨機映射端口到容器開放的網絡端口

docker run -d  -P training/webapp python app.py

 

 檢查映射的端口ubuntu

docker ps -l   #0.0.0.0:32771->5000/tcp

其中32771是宿主機ip的端口,5000是容器端口

 

最好經過-p參數指定映射端口,由於-P參數隨機映射端口,給訪問帶來極大不便vim

docker run -d -p 9999:5000 training/webapp python app.py
52ceb29239466617e2ebff333fbb9e59514910d1309961c6a94a191fbf68a646

 

查看指定容器的端口映射centos

#[root@localhost opt]# docker port 52c
    5000/tcp -> 0.0.0.0:32771

 

而後經過宿主機ip:9999訪問服務器

dockerfile

 

 

...待續

相關文章
相關標籤/搜索