常用docker命令

1:鏡像文件導入導出

docker save -o  xxx.tar myrepo/xxx:latest                  --- 導出鏡像到本地文件
docker load -i xxx.tar                                               --- 將本地文件導入到本地鏡像倉庫

2:網絡管理
docker run -P:隨機分配端口號
docker run -p 5000:5000:綁定特定端口號(主機的所有網絡接口的5000端口均綁定容器的5000端口)
docker run -p 127.0.0.1:5000:5000:綁定主機的特定接口的端口號
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py:綁定udp端口號
docker port <CONTAINER_ID> 5000:查看容器的5000端口對應本地機器的IP和端口號
使用Docker Linking連接容器:
Docker爲源容器和接收容器創建一個安全的通道,容器之間不需要暴露端口,接收的容器可以訪問源容器的數據
docker run -d -P --name <CONTAINER_NAME> --link <CONTAINER_NAME_TO_LINK>:<ALIAS>  


3:數據管理
Data Volumes:volume是在一個或多個容器裏指定的特殊目錄
數據卷可以在容器間共享和重複使用
可以直接修改容器卷的數據
容器卷裏的數據不會被包含到鏡像中
容器卷保持到沒有容器再使用它
可以在容器啓動的時候添加-v參數指定容器卷,也可以在Dockerfile裏用VOLUMN命令添加
docker run -d -P --name web -v /webapp training/webapp python app.py
也可以將容器卷掛載到宿主機目錄或宿主機的文件上,<容器目錄或文件>的內容會被替換爲<宿主機目錄或文件>的內容,默認容器對這個目錄有可讀寫權限
docker run -d -P --name web -v <宿主機目錄>:<容器目錄> training/webapp python app.py可以通過指定ro,將權限改爲只讀docker run -d -P --name web -v <宿主機目錄>:<容器目錄>:ro training/webapp python app.py在一個容器創建容器卷後,其他容器便可以通過--volumes-from共享這個容器卷數據,如下:docker run -d -v /dbdata --name db1 training/postgres echo Data-only container for postgres首先啓動了一個容器,併爲這個容器增加一個數據卷/dbdata,然後啓動另一個容器,共享這個數據卷docker run -d --volumes-from db1 --name db2 training/postgres此時db2使用了db1的容器卷,當容器db1被刪除時,容器卷也不會被刪除,只有所有容器不再使用此容器卷時,纔會被刪除docker rm -v:刪除容器卷
除了共享數據外,容器卷另一個作用是用來備份、恢復和遷移數據
docker run --volumes-from db1 -v /home/backup:/backup ubuntu tar cvf /backup/backup.tar /dbdata啓動一個容器數據卷使用db1容器的數據卷,同時新建立一個數據卷指向宿主機目錄/home/backup,將/dbdata目錄的數據壓縮爲/backup/backup.tardocker run -v /dbdata --name dbdata2 ubuntu /bin/bash
docker run --volumes-from dbdata2 -v /home/backup:/backup busybox tar xvf /backup/backup.tar啓動一個容器,同時把backup.tar的內容解壓到容器的backup


4:其他命令

docker extc -it <CONTAINER> <COMMAND>:在容器裏執行命令,並輸出結果

docker cp <CONTAINER_ID>:path hostpath:複製容器內的文件到宿主機目錄上

docker inspect <CONTAINER_ID>:查看容器詳細信息(輸出爲Json)

docker wait <CONTAINER_ID>:阻塞對容器的其他調用方法,直到容器停止後退出

docker attach <CONTAINER_ID> 連接到啓動的容器
docker logs <CONTAINER_ID>  : 輸出容器日誌

docker stop <CONTAINER_ID>:停止container
docker start <CONTAINER_ID>:重新啓動container

5:刪除none容器

docker rmi $(docker images -q)
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

6:問題記錄

Q1:出現docker demeon無法啓動

很可能是磁盤滿了,可以使用rm -rf /var/lib/docker/*  命令刪除磁盤上所有docker容器,重啓後即可釋放磁盤空間。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章