docker 自誕生以來就是業內討論得很火的一個話題,討論程度僅此於openstack,後期應該會持續更新一些關於docker的內容:
docker是什麼:簡單來說docker 是軟件工業的集裝箱技術,可以實現相互隔離快速打包部署功能。
docker的安裝和基本命令:
環境:
centos 7
docker安裝:
[root@xiaoluo src]# yum install docker-io -y
##docker三個基本概念我之見:
1、鏡像:可以理解成一個簡單的系統,在上面可以部署和運行東西,用鏡像可以啓動一個容器。
2、容器:一個容器代表一個獨立的任務,各容器之前相互隔離運行。
3、廠庫:存放鏡像的地方。
查看鏡像:
[root@xiaoluo src]# docker p_w_picpaths REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos latest 60e65a8e4030 8 weeks ago 196.6 MB ubuntu 14.04 d55e68e6cc9c 11 weeks ago 187.9 MB
*TAG:鏡像的標識,當使用push不加別的版本,默認使用的是latest.
IMAGE ID:鏡像的唯一標識
查看可以下載鏡像:
[root@xiaoluo src]# docker search centos
下載鏡像可以docker pull xxx 從庫裏下載:
交互模式下啓動docker:
[root@xiaoluo src]# docker exec -it centos /bin/bash [root@73aaba6e0cd1 /]#
啓動docker:
[root@localhost ~]# docker run -d -p 2222:22 --name base csphere/centos:7.193e712c9d91467c0748961685e5453a7cd50898212191a762a36c6e933dbd539 *-d 後臺啓動 -p 本機端口2222映射到docker內部的22口(當然前提鏡像是提前構建好,後期會講到) --name 給容器起一個別名 base 鏡像名稱csphere/centos:7.1
查看正在啓動的容器:
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 93e712c9d914 csphere/centos:7.1 "/usr/bin/supervisord" About a minute ago Up About a minute 0.0.0.0:2222->22/tcp base
*查看所有的容器使用docker ps -a
刪除容器:docker rm 93e712c9d914 (刪除正在運行的容器docker rm f)
docker私有廠庫:
當我們使用docker pull的時候默認是從官方的鏡像去下載的,在我們環境中要是搭建一個本地的廠庫存放我們的鏡像就在合適不過了:
步驟:
1、下載一個registry容器,官方的p_w_picpaths有時候被牆,我這裏用的是靈雀雲的鏡像:
[root@localhost ~]# docker pull index.alauda.cn/library/registry
2、重命名一個鏡像:測試用
[root@localhost ~]# docker tag 7e4f044162b7 192.168.63.198:5000/test
*把鏡像ID爲7e4f044162b7定義別名192.168.63.198:5000/test
[root@localhost native]# docker p_w_picpaths REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE 192.168.63.198:5000/test latest 7e4f044162b7 8 days ago 724.9 MB csphere/mysql 5.5 7e4f044162b7 8 days ago 724.9 MB csphere/php-fpm 5.4 f149fdc3bb11 8 days ago 684.8 MB csphere/centos 7.1 e3570ed66dc9 8 days ago 591.3 MB index.alauda.cn/library/registry latest 07d93e41c370 4 weeks ago 422.8 MB docker.io/centos centos7.1.1503 fab4b1df8eb1 4 months ago 212.1 MB
3、本地啓動本地鏡像廠庫:
[root@localhost ~]#docker run -d -p 5000:5000 -v /opt/data/registry/:/tmp/registry-dev 07d93e41c370
4、修改配置文件/etc/sysconf/docker:
打開/etc/sysconfig/docker,找到OPTIONS這一行,取消註釋並修改如下: OPTIONS='--selinux-enabled --insecure-registry=yourip:5000'
**不然會報如下類似錯:
unable to ping registry endpoint https://yourip:5000/v0/ v2 ping attempt failed with error: Get https://yourip:5000/v2/:EOF v1 ping attempt failed with error: Get https://yourop:5000/v1/_ping:EOF
5、提交鏡像到本地庫:
[root@localhost native]# docker push 192.168.63.198:5000/test The push refers to a repository [192.168.63.198:5000/test] (len: 1) Sending p_w_picpath list Pushing repository 192.168.63.198:5000/test (1 tags) f1b10cd84249: Image successfully pushed 172633e38420: Image successfully pushed fab4b1df8eb1: Image successfully pushed 7911a8421c83: Image successfully pushed af42609f6313: Image successfully pushed fa48118fc839: Image successfully pushed b7ca1c16fd68: Image successfully pushed fca316033a3c: Image successfully pushed 09f10030ab42: Image successfully pushed dc888ecebd54: Image successfully pushed 519dde82a4cc: Image successfully pushed 832a31216b14: Image successfully pushed e3570ed66dc9: Image successfully pushed e65974137a30: Image successfully pushed 2752603711a9: Image successfully pushed f027aaa7d0db: Image successfully pushed 6b59cfa21ac8: Image successfully pushed 94d6cbee9151: Image successfully pushed 5caacec189e1: Image successfully pushed 255629e3621b: Image successfully pushed 3ba1834f6adf: Image successfully pushed 7e4f044162b7: Image successfully pushed Pushing tag for rev [7e4f044162b7] on { http://192.168.63.198:5000/v1/repositories/test/tags/latest}
6、上傳成功檢查:
[root@localhost registry]# curl -X GET http://192.168.63.198:5000/v1/search {"num_results": 1, "query": "", "results": [{"description": "", "name": "library/test"}]}
到此本地廠庫創建完成。