最近從新梳理了一下docker的一些基本知識,簡單作了下總結。之後會逐步補充。html
$ uname -r
說明:centos安裝docker比較簡單,使用yum安裝便可。ubuntu下若是實用apt-get的方式安裝不會是最新版,能夠以前帖子,裏面作了詳盡的講解。nginx
ubuntu:http://www.cnblogs.com/tianhei/p/7802064.htmlweb
centos:yum install dockerdocker
$ docker -v
$ service docker start
$ systemctl start docker
$ systemctl enable docker
官方鏡像:hub.docker.comubuntu
阿里雲的docker倉庫:dev.aliyun.comcentos
例如:docker pull busyboxbash
$ docker images
不能刪除鏡像的狀況:網絡
1)有容器使用鏡像已經被建立app
2)此鏡像是其餘鏡像的父鏡像dom
查看當前跑起來的鏡像:
$ docker ps -a
查看鏡像的信息:
$ docker inspect app:1.0 //app是鏡像名,1.0是鏡像版本
刪除鏡像:
$ docker rmi IMAGE_ID // IMAGE_ID 是image的惟一id
官方網站(缺點網速慢):docker hub
私有倉庫(須要維護網速快):
上傳到官方docker hub實例:
1)進入docker hub官網網站建立帳號
2)docker login // 輸入用戶名密碼
3)docker push carson/alpine // carson/alpine是鏡像名
$ docker -run -d -p 5000:5000 --restart=always --name registry -v /data/registry:/var/lib/registry registry:2
說明:
dockcer run 建立容器
-d:建立後,進程啓動到後臺
-p:端口映射。前面宿主機,後面容器
--restart=always:有異常自動啓動
--name:容器名字
-v:容器的目錄映射
registry:2 : 要啓動的鏡像名字
run/create:建立
start:啓動
stop/kill:中止
restart:重啓
pause:暫停
unpause:恢復
logs:查看容器
stats:使用的容量等
top:看到容器跑了多少進程
port:端口映射信息
exec/attach:docker exec -it app bash //登陸容器中 exit退出
diff:
inspect:查看容器詳細信息
update:更新容器信息
例如:docker update -h //查看幫助
docker update -m 256m app //app這個容器使用內容更新到256m
cp:拷貝文件。宿主機和容器間
例如:docker cp app:/usr/share/nginx/html/index.html .
export:把容器保存到tar文件
import:把tar文件導出到鏡像列表
rm:刪除。-f強制
鏡像是隻讀的,容器是執行起來的鏡像。
容器之間有同樣的文件是可共用的,省資源。
commit:把容器commit成鏡像
docker commit -h
save:把鏡像保存成tar文件
load:把鏡像tar文件導入到鏡像列表
history:查看鏡像的操做歷史
pull:下載鏡像
search:查找鏡像源
默認的狀況下,容器中的數據只有本次啓動可見,若是容器重啓數據不會保留。若想讓數據持久化,須要使用volume參數來掛載一個本地路徑以保留數據。
docker run -v把數據掛在到宿主機
容器間數據共享,至關於掛載:
例子:
第一個容器:docker run -d -v /web-data:/tmp:ro --name data-container demos
第二個容器:docker run -d --volumes-from data-container --name web-container domos
第三個容器:docker run -d --volumes-from data-container --name web-container-2 domos
dockerfile用於製做一個用戶自定義的鏡像。須要使用FROM、RUN、WORKDIR、CMD等語法格式進行編寫。
dockerfile文件內容:
FROM centos:7 RUN yum -y install epel-release && \ yum -y install nginx && \ yum clean all EXPOSE 80 443 CMD ["nginx","-g","deamon off;"]
製做docker鏡像
$ docker build -t app .
nat(默認):每一個容器有個網卡,每次啓動都會給容器分配一個私有ip。每次啓動ip會變
host:固定ip,跟主機ip相同,比較危險宿主機容易被攻擊。docker run -d --name app --net=host nginx:1.11.1
container:兩個容器使用同樣的ip。docker run -it --name app --net:container:app1 app sh
none:不建立網絡。