鏡像與容器
在web項目開發完成准備上線時,通常采用docker進行容器化管理,這樣當需要新增服務器時,只需要將容器生成鏡像,將鏡像復制到另外的服務器即可,在使用之前我們有必要了解一些什么是鏡像什么是容器
鏡像:就是將操作系統打包成一個文件,這可文件容易傳輸,就想平時使用U盤重裝系統是放在U盤的系統,區別在於鏡像里面一般很純凈,只有一些系統必要的文件,沒有其他文件,所有不像我們安裝系統的文件這么大,像redis鏡像,mysql鏡像等鏡像一般只有100m大小
容器:是已經運行在內存的鏡像文件,內容不能直接復制,就像我們使用的操作系統,所以想要將容器復制一份,需要先將容器打包成鏡像文件,關系圖如下所示:
下載
1.更新ubuntu的apt源索引:
sudo apt-get update
2.安裝允許apt通過https使用倉庫:
sudo dpkg --configure -a
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
3.添加Docker官方DPD key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4.設置Docker穩定版倉庫
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5.添加倉庫后,再次更新apt源索引
sudo apt-get update
6.安裝最新版Docker CE(社區版)
sudo apt-get install docker-ce
7.檢測Dcoker CE是否安裝成功(命令是允許hello-world鏡像,由於系統本來沒有hello-world鏡像,docker會自動在官網下載hello-world鏡像)
sudo docker run hello-world
安裝成功則會出現下圖:
docker常命令使用
查看docker當前版本
docker version
啟動docker
sudo service docker start
停止docker
sudo service docker stop
重啟docker
sudo service docker restart
關於鏡像
列出所有鏡像
docker image ls --all(課程查看鏡像名,鏡像id等信息)
拉取鏡像(沒有版本號默認拉去最新版本)
docker image pull <鏡像名:版本號>
刪除鏡像(在刪除鏡像前,需要把正在允許的鏡像先停止)
docker image rm <鏡像名或者鏡像id>
把鏡像打包成文件發送給別人
docker save -o 自定義文件名.tar.gz 鏡像名
把鏡像tar.gz文件加載到docker中
docker load -i 文件名.tar.gz
關於容器
運行鏡像文件
docker container run -itd -p80:80 -v/home:/home --name=test 鏡像名
container可以省略,-i表示容器啟動后會進入其命令行終端, -t:表示以“交互模式”運行容器,-d:創建一個守護式容器在后台運行(這樣創建容器后不會自動登錄容器,如果只加-i -t 兩個參數,創建后就會自動進去容器),-p:冒號前面是服務器的端口號,即外部訪問的端口號,后面是容器得到端口號,-v:冒號前面是服務端的目錄,后面是容器的目錄,將該目錄生成一個快捷方式到冒號后面的目錄,--name是指定容器名,不寫則系統自動生成
列出所用容器
docker container ls (列出所用正在運行的容器)
docker container ls --all(列出所用容器)
啟動容器
docker container start <容器名或者容器id>
停止容器(類似於電腦正常關閉)
docker container stop <容器名或者容器id>
殺死容器(類似於拔電腦電源)
docker container kill <容器名或者容器id>
進入正在運行的容器(bash是進入容器的第一個命令)
docker container exec -it 容器名或者容器id bash
刪除容器
docker container rm<容器名或者容器id>
把容器保存成鏡像
docker commit <容器名或容器id> 自定義鏡像名
其他
使用docker命令需要管理員權限,如果希望每次輸入docker相關命令時,不用sudo,可通過以下命令進行設置
sudo usermod -a -G docker $USER
sudo service docker restart
newgrp - docker