1. 程式人生 > >docker基本命令和基本操作命令

docker基本命令和基本操作命令

docker-教程

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 工作流程

docker