docker基本命令和基本操作命令
阿新 • • 發佈:2018-11-12
docker-教程
docker 教程
Docker官方英文資源 docker官網:http://www.docker.com Docker windows入門:https://docs.docker.com/windows/ Docker Linux 入門:https://docs.docker.com/linux/ Docker mac 入門:https://docs.docker.com/mac/ Docker 使用者指引:https://docs.docker.com/engine/userguide/ Docker 官方部落格:http://blog.docker.com/ Docker Hub: https://hub.docker.com/ Docker開源: https://www.docker.com/open-source Docker中文資源 Docker中文網站:https://www.docker-cn.com/ Docker安裝手冊:https://docs.docker-cn.com/engine/installation/ Docker 國內映象 網易加速器:http://hub-mirror.c.163.com 官方中國加速器:https://registry.docker-cn.com ustc的映象:https://docker.mirrors.ustc.edu.cn daocloud:https://www.daocloud.io/mirror#accelerator-doc(註冊後使用)
docker三個重要的問題:dockerfile 容器 映象
1.dockerfile:把需要什麼系統,需要裝什麼軟體,需要怎麼配置環境等等全部都寫進Dockerfile裡面,相當於是一個基於docker的全自動生成映象的一個指令碼.
$ docker build -t image:tag #依據dockerfile建立docker
2.映象:docker的靜態,Dockerfile生成的是映象,docker 映象是docker移植的關鍵,容器是以save 、load docker映象為主。
3.容器:容器是docker的動態,由映象run出來的(sudo docker run),容器是docker的精華,你可以理解為容器技術就是應用了集裝箱的思維,把所需要的所有東西都放進一個集裝箱(container)裡面,哪裡需要服務,我直接把整個集裝箱運過去,然後你進去集裝箱享受服務就好了。
docker命令集合
#從當前目錄下的Dockerfile(命名dockerfile好像也能識別,其他就不行了)建立映象 sudo docker build -t reponame:tag . #別忘了最後那個.! sudo docker images #檢視映象 sudo docker ps #檢視當前執行的容器 sudo docker ps -a #檢視全部容器(包括執行中的和停止的) sudo docker run -it --name blabla -p <物理機>:<容器>(e.g. 127.0.0.1:3306:3306) -v /your/local/path/:/map/path/in/docker/ -v /etc/localtime:/etc/localtime --net =host -d reponame:tag # 啟動容器 #[-it 是啟動互動和偽終端] #[-p <IP>:<宿主機埠>:<容器埠> 將宿主機(物理機)對映或者可以理解為繫結,<IP>可以指定,也可以不指定,不指定預設是0.0.0.0,建議還是指定] #[-v 是掛載本機目錄到到docker目錄,最好每次都把-v /etc/localtime:/etc/localtime也帶上,確保docker 容器內時間和伺服器時間一致] #[-d 是daemonize的意思,就是使容器成為守護程序,後臺運作] #[--net是設定docker的網路模式,預設不設定的話就是bridge模式,現在設定為和物理機網路繫結的host模式,更多可以看 Docker的4種網路模式(http://www.cnblogs.com/gispathfinder/p/5871043.html) #[--link 是容器連結] #複習幾個特別的IP: #①127.0.0.1是本地迴環地址,代指本機; [對於繫結在127.0.0.1的埠而言,外部無法訪問,不對外開啟,僅僅對內開啟] #②0.0.0.0 代表所有不清楚的IP,安全性差,也是指本機?;[對於繫結在0.0.0.0的埠而言,外部可以訪問] #③255.255.255.255 用人類的話說:“嘿,這屋子的所有人聽著了!” #④localhost 這個是域名,一般都是127.0.0.1,這種對應關係寫在你的/etc/hosts裡面 sudo docker start/stop/restart/rm blabla #啟動/停止/重啟/刪除 容器 sudo docker cp blabla:/app/file.txt . # 把docker裡面/app目錄下的file.txt檔案複製出來到現在所在的目錄 sudo docker exec -it blabla /bin/bash #在啟動的容器blabla中執行/bin/bash sudo docker exec -it blabla /the/path/of/your/command sudo docker commit blabla repo:tag #提交儲存容器到一個新的映象repo:tag sudo docker login --username=vvvhkfhfkhdkfh registry.cn-shenzhen.aliyuncs.com #預設登陸阿里巴巴 https://cr.console.aliyun.com/repository/cn-shenzhen/errolyan/tts_tacotron/detail docker push images_name:tag #push 本地映象到阿里巴巴倉庫 #從阿里巴巴倉庫拉取映象 sudo docker pull registry.cn-shenzhen.aliyuncs.com/errolyan/tts_tacotron:[映象版本號] #將映象推送到阿里巴巴倉庫 sudo docker login --username=vvvhkfhfkhdkfh registry.cn-shenzhen.aliyuncs.com sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/errolyan/tts_tacotron:[映象版本號] sudo docker push registry.cn-shenzhen.aliyuncs.com/errolyan/tts_tacotron:[映象版本號] sudo docker rmi repo:tag #刪除映象 #容器的匯出和匯入 sudo docker export sudo docker import #映象的匯出和匯入 [檔案] sudo docker save repo:tag > backup.tar sudo docker load < backup.tar [dockerhub] sudo docker login sudo docker push repo:tag sudo docker pull repo:tag #常用組合命令 #停止所有docker容器 sudo docker kill $(sudo docker ps -q) #刪除所有docker容器 sudo docker rm $(sudo docker ps -aq)
ec2a2c8be2472a24fa4ae906884494cc.png
docker 工作流程