系統(tǒng)環(huán)境:centos7
1、環(huán)境準(zhǔn)備
安裝:yum install docker
開啟服務(wù):service docker start
測試:docker run hello-world (或是docker verison)
2、鏡像測試
搜索本地鏡像:docker images
查看源鏡像庫有關(guān)java方面的鏡像并且收藏數(shù)大于10:docker search -s 10 java
下載鏡像:docker pull *** (直接運行某個鏡像的時候也會自動下載)
后臺運行l(wèi)earn/tutorial鏡像并執(zhí)行sh腳本(腳本含義:每秒輸出一次hello world)
docker run -d learn/tutorial /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run -t -i runoob/ubuntu:v2 /bin/bash
docker ps 查詢正在運行的鏡像
從上面的查詢的ID來查看此鏡像輸出的日志
docker logs ID
停止鏡像
docker stop ID
3、項目實戰(zhàn)(注意各個版本)
docker容器環(huán)境的安裝
a、centos的安裝
docker pull centos
國外的docker Hub可能比較慢,使用下面的命令修改 daemon.json文件,會添加一個registry-mirrors:注冊服務(wù)器鏡像(使用daocloud的,默認(rèn)為docker Hub)
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ce611378.m.daocloud.io
查看本地鏡像列表
docker images
b、操作centos
進(jìn)入系統(tǒng):docker run -i -t centos /bin/bash
新建文件:mkdir test
!!!然后更新yum update(ubuntu的系統(tǒng)是 apt-get update)--------教程中只是做一個修改,直接mkdir
!!!然后exit退出系統(tǒng)----------退出系統(tǒng),容器會停止,所以在此之前用此賬戶再開一個窗口 執(zhí)行下面的操作
(后來發(fā)現(xiàn)docker ps -a 可以查詢到所有的啟動過容器,可以獲取到ID。
docker start ID 啟動停止的鏡像
docker attach ID 進(jìn)入鏡像中 ###exit之后鏡像依舊掛掉
或是 docker exec -i -t ID /bin/bash ###這種方式鏡像在后臺存活
)
c、提交修改
docker commit -m="第一次提交" -a="polaris" 425cef90ab3f polaris/centos:v1
-m: 描述信息
-a: 作者
425cef90ab3f:ID
polaris/centos:v1 :創(chuàng)建的目標(biāo)鏡像名+tag
重新進(jìn)入剛剛提交的鏡像
docker run -i -t polaris/centos:v1 /bin/bash
之前所做的操作都存在
***如果你想推送你的鏡像到注冊中心
首先需要在docker官網(wǎng)創(chuàng)建一個Repository
如果你本地的名字和創(chuàng)建的不一樣,會提示未授權(quán),使用docker tag local-images:v1 dockerHub-images:v1
a、docker login 登錄docker
b、docker push **** 然后push你的本地鏡像(很多操作和git類似)
快速構(gòu)建
1、使用docker bulid來構(gòu)建(會讀取dockerfile文件),推薦!更快速簡潔
2、先pull然后修改之后commit(方法一的底層也是通過這種方式)
** 注意 **
1、從國外服務(wù)器pull鏡像速度較慢,直接使用由DaoCloud或者阿里提供的Registry Mirror服務(wù)
http://blog.daocloud.io/how-to-master-docker-image/
2、掛載磁盤
docker run -it -v /home/download:/mnt polaris/centos:v1 /bin/bash
將宿主的下載文件夾 掛載 到docker容器polaris鏡像中的docker下
但如果你想 在已經(jīng)啟動的docker鏡像中掛載 請參考(還沒試過)http://www.open-open.com/lib/view/open1421996521062.html
3、搭建基本環(huán)境(JDK8 + tomcat7)
a, 現(xiàn)在宿主機(jī)器里wget下資源(JDK8+tomcat7的tar包),坑爹的JDK7官網(wǎng)已經(jīng)不支持游客下載
b, 將宿主磁盤掛載到docker鏡像mnt目錄下,解壓然后cp到自己定義的目錄
c, jdk: 修改/etc/profile,添加路徑保存,然后source /etc/profile更新
4、查看容器相關(guān)信息(主要是查看網(wǎng)絡(luò)配置,容器里面很多命令都沒有)
docker inspect a7e0139b5940
5、端口映射
docker run -i -t -p 5000:8080 polaris/centos:v1 /bin/bash (交互型)
docker run -d -i -t -p 5000:8080 polaris/centos:v1 (后臺型)
6、阿里云(以本人為例子)
下載
docker pull registry.cn-hangzhou.aliyuncs.com/polarisnosnow/polaris:v2
上傳
docker login --username=**** registry.cn-hangzhou.aliyuncs.com
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/polarisnosnow/polaris:[鏡像版本號]
docker push registry.cn-hangzhou.aliyuncs.com/polarisnosnow/polaris:[鏡像版本號]
7、搭建注冊服務(wù)器
docker pull registry
docker run -p 5000:5000 -d -i -t registry
之后就可以直接commit&push了
docker commit cid 127.0.0.1:5000/my_image:v1
docker push 127.0.0.1:5000/my_image:v1
可以使用docker API查看庫中結(jié)果
http://127.0.0.1:5000/v2/_catalog
http://127.0.0.1:5000/v2/my_image/tag/list
注意客戶端在/etc/docker/daemon.json 中添加{ "insecure-registries":["127.0.0.1:5000"]}
安全訪問(默認(rèn)走的https)
8、docker管理界面
dockerUI:只能用于單機(jī),單功能齊全
構(gòu)建腳本:docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
shipyard:適合集群,各種資源分配,性能檢測等
/etc/sysconfig/docker中添加對2375的監(jiān)聽 OPTIONS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
shipyard構(gòu)建腳本(啟動的容器較多) curl -s https://shipyard-project.com/deploy | bash -s
Username: admin Password: shipyard
或者:docker run --rm -v /var/run/docker.sock:/var/run/docker.sock shipyard/deploy start