docker個人理解和常用命令總結

個人理解,docker就是用來裝service的容器,在docker的包裝下,所有的服務便可以方便設置端口,方便service之間的協作。它的作用其實就是消除了service之間的耦合,方便service的管理。
1.首先docker中會有container(容器)
對container的管理命令:
docker stop <CONTAINER_ID>:停止container
docker start <CONTAINER_ID>:重新啓動container
docker ps - Lists containers.
-l:顯示最後啓動的容器
-a:同時顯示停止的容器,默認只顯示啓動狀態
docker attach <CONTAINER_ID> 連接到啓動的容器
docker logs <CONTAINER_ID> : 輸出容器日誌 e.g. docker logs -f containerID
-f:實時輸出
docker cp <CONTAINER_ID>:path hostpath:複製容器內的文件到宿主機目錄上
docker rm <CONTAINER_ID>:刪除container
docker rm `docker ps -a -q`:刪除所有容器
docker kill `docker ps -q`
docker rmi `docker images -q -a`
docker wait <CONTAINER_ID>:阻塞對容器的其他調用方法,直到容器停止後退出
docker top <CONTAINER_ID>:查看容器中運行的進程
docker diff <CONTAINER_ID>:查看容器中的變化
docker inspect <CONTAINER_ID>:查看容器詳細信息(輸出爲Json)
docker exec -it <running CONTAINER_ID> /bin/bash 修改正在運行的container的文件
-f:查找特定信息,如docker inspect -f '{{ .NetworkSettings.IPAddress }}'
docker commit -m "comment" -a "author" <CONTAINER_ID> ouruser/imagename:tag
docker extc -it <CONTAINER> <COMMAND>:在容器裏執行命令,並輸出結果
2.container裏會有image
對image的操作命令:
docker images:列出本地所有鏡像
docker search <IMAGE_ID/NAME>:查找image
docker pull <IMAGE_ID>:下載image
docker push <IMAGE_ID>:上傳image
docker rmi <IMAGE_ID>:刪除image
想要刪除image首先要停止其對應的container。
docker tag imageID new name image重命名
docker-compose build build images
./gradlew clean buildDocker -x test (基於gradle構建的項目 build images)
docker-compose up 啓動鏡像
想要刪除untagged images,也就是那些id爲<None>的image的話可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
3.docker的網絡管理命令:
倉庫管理
docker login:登錄
網絡管理
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>

4.數據管理
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.tar
docker 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
發佈了18 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章