Docker 常用的一些命令
#docker run -i -t ubuntu /bin/bash
root@80952d0ecfba:/# apt-get update
root@80952d0ecfba:/# apt-get install vim
root@80952d0ecfba:/# apt-get install git
root@80952d0ecfba:/# apt-get install wget
root@80952d0ecfba:/# exit
#docker ps -a
#列出最近一次啟動(dòng)的container
#docker commit --author="amazing_bing@outlook.com" 71a95aa007f1 docker/test
#命令中,指定了要提交的修改過(guò)的容器的ID、目標(biāo)鏡像倉(cāng)庫(kù)抖苦、鏡像名相赁。commit提交的知識(shí)創(chuàng)建容器的鏡像與容器的當(dāng)前狀態(tài)之間的差異部分滞时,很輕量少欺。
#docker images
#查看新創(chuàng)建的鏡像
#docker rmi docker/test
#刪除鏡像文件
#docker rm `docker ps -a -q`
#刪除所有容器
推送自己的鏡像文件
# docker login
# docker tag centos6.3-base frankzfz/centos6.3-base
#重命名自己的docker鏡像名稱
#docker push frankzfz/centos6.3-base:latest
#推送
#docker run -d -p 8080:5000 frankzfz/centos6.3-base
#-d 表示守護(hù)形式后臺(tái)一直運(yùn)行該容器
#-p 80:8080 Dockerfile 中暴露了容器的 8080 端口蹂窖,將其映射到本機(jī)的 80 端口
docker參數(shù)詳解
Useage of docker
-D默認(rèn)false允許調(diào)試模式(debugmode)
-H默認(rèn)是unix:///var/run/docker.sock tcp://[host[:port]]來(lái)綁定或者unix://[/path/to/socket]來(lái)使用(二進(jìn)制文件的時(shí)候)智听,當(dāng)主機(jī)ip host=[0.0.0.0],(端口)port=[4243]或者path=[/var/run/docker.sock]是缺省值,做為默認(rèn)值來(lái)使用
-api-enable-cors默認(rèn)flase允許CORS header遠(yuǎn)程api
-b默認(rèn)是空怜珍,附加在已存在的網(wǎng)橋上端蛆,如果是用'none'參數(shù),就禁用了容器的網(wǎng)絡(luò)
-bip默認(rèn)是空酥泛,使用提供的CIDR(ClasslessInter-Domain Routing-無(wú)類型域間選路)標(biāo)記地址動(dòng)態(tài)創(chuàng)建網(wǎng)橋(dcoker0),和-b參數(shù)沖突
-d默認(rèn)false允許進(jìn)程模式(daemonmode)
-dns默認(rèn)是空今豆,使docker使用指定的DNS服務(wù)器
-g默認(rèn)是"/var/lib/docker":作為docker使用的根路徑
-icc默認(rèn)true嫌拣,允許inter-container來(lái)通信
-ip默認(rèn)"0.0.0.0":綁定容器端口的默認(rèn)Ip地址
-iptables默認(rèn)true禁用docker添加iptables規(guī)則
-mtu默認(rèn)1500 :設(shè)置容器網(wǎng)絡(luò)傳輸?shù)淖畲髥卧?mtu)
-p默認(rèn)是/var/run/docker.pid進(jìn)程pid使用的文件路徑
-r默認(rèn)是true重啟之前運(yùn)行的容器
-s默認(rèn)是空,這個(gè)是docker運(yùn)行是使用一個(gè)指定的存儲(chǔ)驅(qū)動(dòng)器
-v默認(rèn)false打印版本信息和退出
7呆躲、docker run命令詳解
Usage: docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
Run a command in a new container
-a=map[]:附加標(biāo)準(zhǔn)輸入异逐、輸出或者錯(cuò)誤輸出
-c=0:共享CPU格式(相對(duì)重要)
-cidfile="":將容器的ID標(biāo)識(shí)寫入文件
-d=false:分離模式,在后臺(tái)運(yùn)行容器插掂,并且打印出容器ID
-e=[]:設(shè)置環(huán)境變量
-h="":容器的主機(jī)名稱
-i=false:保持輸入流開放即使沒有附加輸入流
-privileged=false:給容器擴(kuò)展的權(quán)限
-m="":內(nèi)存限制(格式:, unit單位= b, k, m or g)
-n=true:允許鏡像使用網(wǎng)絡(luò)
-p=[]:匹配鏡像內(nèi)的網(wǎng)絡(luò)端口號(hào)
-rm=false:當(dāng)容器退出時(shí)自動(dòng)刪除容器(不能跟-d一起使用)
-t=false:分配一個(gè)偽造的終端輸入
-u="":用戶名或者ID
-dns=[]:自定義容器的DNS服務(wù)器
-v=[]:創(chuàng)建一個(gè)掛載綁定:[host-dir]:[container-dir]:[rw|ro].如果容器目錄丟失灰瞻,docker會(huì)創(chuàng)建一個(gè)新的卷
-volumes-from="":掛載容器所有的卷
-entrypoint="":覆蓋鏡像設(shè)置默認(rèn)的入口點(diǎn)
-w="":工作目錄內(nèi)的容器
-lxc-conf=[]:添加自定義-lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"
-sig-proxy=true:代理接收所有進(jìn)程信號(hào)(even in non-tty mode)
-expose=[]:讓你主機(jī)沒有開放的端口
-link="":連接到另一個(gè)容器(name:alias)
-name="":分配容器的名稱,如果沒有指定就會(huì)隨機(jī)生成一個(gè)
-P=false: Publish all exposed ports to thehost interfaces公布所有顯示的端口主機(jī)接口
docker常用命令總結(jié)
docker pull ?<鏡像名:tag>? #從官網(wǎng)拉取鏡像
docker search <鏡像名>? #搜索在線可用鏡像名
查詢?nèi)萜鞲ㄉ㈢R像酝润、日志
docker top #顯示容器內(nèi)運(yùn)行的進(jìn)程
docker images? #查詢所有的鏡像,默認(rèn)是最近創(chuàng)建的排在最上肆氓。
docker ps?#查看正在運(yùn)行的容器
docker ps -l #查看最后退出的容器的ID
docker ps -a #查看所有的容器袍祖,包括退出的底瓣。
docker logs? {容器ID|容器名稱}? #查詢某個(gè)容器的所有操作記錄谢揪。
docker logs -f ?{容器ID|容器名稱}? #實(shí)時(shí)查看容易的操作記錄。
刪除容器與鏡像
docker rm$(docker ps -a -q)#刪除所有容器
docker rm <容器名or ID>??? #刪除單個(gè)容器
docker rmi ?? #刪除單個(gè)鏡像
docker rmi$(docker images | grepnone| awk'{print $3}'| sort -r)#刪除所有鏡像
啟動(dòng)停止容器
docker stop ?<容器名or ID>? ?#停止某個(gè)容器
docker start ?<容器名or ID>? #啟動(dòng)某個(gè)容器
docker kill? ??<容器名or ID>? #殺掉某個(gè)容器
容器遷器
docker export > /home/export.tar? #導(dǎo)出
cat /home/export.tar | sudo docker import ?- ?busybox-1-export:latest? #導(dǎo)入export.tar文件
docker save debian> /home/save.tar#將debian容器打包
docker load< /home/save.tar#在另一臺(tái)服務(wù)器上加載打包文件
save和export的對(duì)比參考地址:
Docker的save和export命令的區(qū)別_人人IT網(wǎng)
運(yùn)行一個(gè)新容器
#運(yùn)行一個(gè)新容器捐凭,同時(shí)為它命名拨扶、端口映射。以debian02鏡像為例
docker run -h="redis-test"? --name redis-test -d -p 51000:22 -p51001:3306 -p 51003:6379 -p 51004:6381?-p 51005:80 -p 51006:8000 -p 51007:8888??debian02 /etc/rc.local
#從container中拷貝文件茁肠,當(dāng)container已經(jīng)關(guān)閉后患民,在里面的文件還可以拷貝出來(lái)。
sudo docker cp 7bb0e258aefe:/etc/debian_version .#把容器中的/etc/debian_version拷貝到當(dāng)前目錄下垦梆。
docker Dockfile鏡像制作
root@yangrong:/data# cat Dockerfile
FROM ubuntu/testa??? ?#這是基礎(chǔ)鏡像
CMD ["/root/start.sh"]??#這是啟動(dòng)命令
root@yangrong:/data# docker build -t <新鏡像名> ./??? #生成新的鏡像
Dockerfile 用于編寫一個(gè)鏡像匹颤,下面創(chuàng)建了一個(gè)新的 Docker 鏡像:
from ubuntu:latest# 基于 ubuntu:latest
ENV HOSTNAME=changkun# 設(shè)置 HOSTNAME 環(huán)境變量
通過(guò)docker build構(gòu)建新鏡像:
$docker build -t changkun .
其中-t changkun指定了鏡像的名字, .標(biāo)志從當(dāng)前目錄查找 Dockerfile。
0x03?Dockfile更多參數(shù)參考: