一、docker介紹node
Docker是PaaS 提供商 dotCloud 開源的一個基於 LXC 的高級容器引擎,源代碼託管在 Github 上, 基於go語言並聽從Apache2.0協議開源。
Docker是經過內核虛擬化技術(namespace以及cgroups等)來提供容器的資源隔離與安全保障。因爲Docker經過操做系統層的虛擬化實現隔離,因此Docker容器在運行時,不須要相似虛擬機( VM)額外的操做系統開銷,提升資源利用率。linux
組件:容器,鏡像,倉庫docker
用途:簡單配置、代碼流水線管理、開發效率、應用隔離、服務器整合、調試能力、多租戶、快速部署centos
docker改變了什麼?安全
面向產品:產品交付bash
面向開發:簡化配置環境服務器
面向測試:多版本測試架構
面向運維:環境一致性運維
面向架構:自動化擴容測試
二、docker部署
yum install docker systemctl start docker systemctl enable docker
查看docker信息
[root@izwz99hcysthbz36uveqfvz ~]# docker info
搜索docker鏡像
[root@izwz99hcysthbz36uveqfvz ~]# docker search centos(鏡像名稱)
查看鏡像(docker images信息包括:鏡像倉庫、標籤、鏡像ID、建立時間、大小)
[root@izwz99hcysthbz36uveqfvz ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest 9f38484d220f 5 days ago 202 MB
刪除鏡像
[root@izwz99hcysthbz36uveqfvz ~]# docker rmi centos(鏡像名稱)
鏡像的導出、導入和下載
[root@izwz99hcysthbz36uveqfvz ~]# docker pull centos(鏡像名稱) [root@izwz99hcysthbz36uveqfvz ~]# docker save centos > /opt/centos.tar.gz 將linux-node2的鏡像導出文件上傳到linux-node1機器上,而後在linux-node1機器上導入 [root@izwz99hcysthbz36uveqfvz ~]# docker load < /opt/centos.tar.gz
首次建立一個容器
[root@linux-node4 ~]# docker run centos /bin/echo "hehe" hehe
查看容器狀態
能夠使用docker ps只能看見存活的容器,docker ps -a 查看所有的容器,結果信息表示:
容器ID、使用的鏡像、執行的命令、建立的時間、狀態、端口、名稱(若是不指定,自動生成)
[root@izwz99hcysthbz36uveqfvz ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49a3dd40f0a1 centos "/bin/echo hehe" 7 seconds ago Exited (0) 6 seconds ago inspiring_mirzakhani
建立容器
--name:指定容器名稱
-t:分配一個tty終端
-i:容器的標準輸入保持打開的狀態
[root@izwz99hcysthbz36uveqfvz ~]# docker run --name mydocker -t -i centos /bin/bash [root@405fa58d00f9 /]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.2 0.1 11820 1884 ? Ss 07:40 0:00 /bin/bash root 14 0.0 0.0 51740 1736 ? R+ 07:40 0:00 ps aux
這種方式建立自動進入容器,開啓的容器只執行/bin/bash
啓動、中止容器
[root@izwz99hcysthbz36uveqfvz ~]# docker start ID
[root@izwz99hcysthbz36uveqfvz ~]# docker stop ID
進入容器
[root@izwz99hcysthbz36uveqfvz ~]# docker attach 405fa58d00f9
[root@405fa58d00f9 /]#
刪除容器
[root@izwz99hcysthbz36uveqfvz ~]# docker rm ID