docker一: 鏡像與容器管理
Docker的優勢:
1、啟動非常快,秒級實現。
2、資源利用率高,在機器中以進程的方式存在,一臺機器可以跑上百個docker容器。
3、創建和配置後可以在任意地方運行docker,只需將其上傳到docker倉庫,用到時拉下來就可以
4、易遷移,平臺依賴性不強。
Docker的主要概念:
1、鏡像:只讀模板,類似於安裝系統用到的iso文件,對於鏡像我們可以自定義,比如在一臺機器上安裝好lnmp環境,然後打包成為一個鏡像,那麽後期只需要從倉庫中把這個鏡像拉下來就可以直接使用lnmp環境了,非常方便。
2、容器:鏡像類似於操作系統,而容器類似於虛擬機本身。可以進行啟動、開始、停止、刪除等等操作,容器之間相互隔離。
3、倉庫:存放鏡像的一個場所,倉庫分為共有倉庫和私有倉庫。公開的最大倉庫為Docker Hub。
Docker安裝:
CentOS6:yum install -y epel-release ; yum install -y docker-io
CentOS7:yum install -y docker
Docker鏡像管理:
docker pull centos //從DockerHub拉取centos的鏡像
docker images //查看本地鏡像
docker tag centos raffaele:1 //給本地存在的鏡像打tag,並且還可以指定版本
docker search centos //搜索倉庫中的鏡像
docker run -i -t centos /bin/bash //指定下載到的鏡像開啟容器,-i表示讓容器的標準輸入打開,-t表示分配一個偽終端
docker ps -a //查看所有容器
docker rmi centos:tag //指定版本刪除容器,也可以指定ID來刪除,不推薦
docker exec -i -t 已創建的容器名 //進入到已經創建過的容器中
Docker鏡像使用容器生成新的鏡像:
運行docker run命令之後,我們進入到容器中,做了一些變更之後,可以針對這個改過的容器創建一個新的鏡像,使用以下命令可以跟據原來的鏡像創建一個新的鏡像並提交到本地倉庫中。
docker commit -m "install net-tools" -a "raffaele" 461b3a566657 centos_with_nettools
-m表示註釋,-a指定作者,後面緊接著 原鏡像的ID 和 新的鏡像名,還可以指定版本號,默認為last。
Docker基於本地模板導入創建鏡像:
1、模塊獲取,可以直接在網上下載一個模塊https://openvz.org/Download/template/precreated
2、我們下載好一個模塊之後,可以使用命令將其導入為鏡像:
cat debian-7.0-x86-minimal.tar.gz |docker import - debian-7-x86_64
3、將現有鏡像導出為一個文件:
docker save -o raffaele-debian.tar +現有鏡像的名字或者ID
4、用文件恢復本地鏡像:
docker load --input raffaele-debian.tar 或者 docker load < raffaele-debian.tar
5、將自己的鏡像上傳到dockerhub上:
docker push image_name
Docker容器管理:
docker create -i -t +鏡像名 //創建一個容器,但是該容器並沒有啟動
docker start +容器ID //啟動已經停止的容器
docker run -d //讓容器在後臺運行
docker run -d +鏡像名 bash -c "while:;do echo "raffaele";sleep 1;done"
docker run --name web -i -t -d +鏡像名 bash //--name給容器指定名字
docker run --rm -i -t +鏡像名 bash -c "sleep 30" //--rm讓容器退出後直接刪除,不能和-d一起 使用,在這裏命令執行完容器就會退出。
docker rm +鏡像ID //刪除鏡像
docker rm -f +鏡像ID //強制刪除正在運行的容器
docker logs +容器ID //獲取容器的運行歷史信息
docker attach +容器ID //附著到已經運行的容器中,但是退出後容器隨之停止
docker exec -i -t +鏡像ID bash //進入已經運行的容器中,退出後容器依然運行
docker export +容器ID > file.tar //導出容器,可以將容器遷移到其它機器上
cat file.tar |docker import - +自定義鏡像ID //可以將其它機器的容器文件在本臺機器上重新導出為鏡像
Docker倉庫管理:
docker pull registry //下載registry鏡像,registry為docker官方提供的鏡像,我們可以用它來創建本地的docker私有倉庫
docker run -d -p 5000:5000 registry //以registry鏡像啟動容器,監聽5000端口
curl localhost:5000 //可以訪問
docker tag +本地鏡像名 192.168.145.132(宿主機ip):5000/centos(自定義tag名) //標記tag,必須帶私有倉庫的ip:port
docker push +本地鏡像名 //將指定的鏡像上傳到本地鏡像倉庫中
但是註意,這裏會出錯,因為docker默認是與https通信的,我們只有http,因此,修改啟動腳本:
vim /etc/init.d/docker
將$exec -d $other_args 改為$exec -d --insecure-registry 192.168.145.132:5000 $other_args
之後重啟docker:/etc/init.d/docker restart
再次啟動docker容器:docker start registry_container_id
curl http://192.168.145.132:5000/v1/search //查看私有倉庫裏面的所有鏡像
本文出自 “奇跡的少年” 博客,請務必保留此出處http://raffaelexr.blog.51cto.com/8555551/1943663
docker一: 鏡像與容器管理