1. 程式人生 > 其它 >【Docker 學習筆記】基本原理和基本操作

【Docker 學習筆記】基本原理和基本操作

技術標籤:dockerdockerlinux

注:所有實驗均來自【Educoder平臺】

Docker學習基本原理和操作

啟動服務:service docker start

拉取映象

docker pull isoname:latest
docker run --name first_docker_container isoname:latest echo "Hello"
  1. 檢視容器資訊docker ps [-a檢視所有容器]
  2. 停止一個容器docker stop [option] Container [Container ...]
  3. 容器在後臺執行並且不會將輸出結果輸出到控制檯run [-d ]

進入docker的幾種方法

  • ssh登陸
  • nsenter、nsinit第三方工具
  • docker本身的工具
docker attach containerId|containerName
1. Id不用輸全,只需要標全即可
2. 命令實際上進入容器“啟動命令”的終端

docker exec [options] containerName|containerId command [arg]

例子:
docker exec id mkdir dir
docker exec -it id /bin/bash
1. -it為其分配了一個偽終端繫結到標準輸出上 

兩種方式的比較:
1. attach直接進入容器的啟動命令的終端,不會啟動新的程序

2.
exec會建立新的終端同時可以啟動新的程序 使用場景:直接在終端中檢視容器的啟動命令的輸出,使用attach;其他都是用exec

刪除容器

docker rm containName|containId # 刪除處於終止狀態的容器,沒有引數的情況下,只能刪除處於終止狀態的容器

# 刪除正在執行的容器:
# way 1. 停止後刪除
docker stop dockerId|dockerName
docker rm dockerId|dockerName

docker rm $(docker ps -a -q) # 刪除所有停止狀態的容器

# way 2. 強制刪除
docker rm
-f

定製容器

你需要知道:你是無法直接檢視一個容器的內容,因為映象是隻讀的,也無法做出任何修改。

# 例項:修改nginx的歡迎介面
docker run --name webserver -d -p 80:80 nginx
docker exec -it webserver /bin/bash # 進入
echo '<h1>Hello Docer!</h1>' > /usr/share/nginx/html/index.html

儲存為映象:在原有的映象的基礎上,再疊加上容器的儲存層(儲存層僅僅儲存了容器所做出的修改),將這些內容構成一個新的映象

docker commit [options:--author作者;--message:指定提交的資訊] CONTAINERNAME [isoname新映象的名字]

docker commit webserver nginx:v1

儲存和載入映象

一個或者多個映象儲存至tar檔案:docker save [OPTIONS] IMAGE [IMAGE...]

# 例項
docker save alpine:latest > alpine.tar
# 另一種寫法
docker save -o alpine:latest alpine.tar

# 多個 -> 一個
docker save alpine:latest ubuntu:latest > image.tar

load載入save儲存的tar檔案

docker load < alpine.tar
# 或者
docker load -i alpine.tar

綜合案例:將一個映象從一個機器上打包後傳送到另一個機器上並解包

docker save [isoname] | bzip2 | pv | ssh [email protected] 'cat | docker load'

匯入匯出容器

容器檔案系統 >> tar包:docker export [options] containername

# 例項
docker export container1 > container1.tar
# 或者
docker export container1 -o container1.tar

從tar匯入一個映象:docker import [options]file/url - isoname

# 例項
docker cat container1.tar | docker import - test:v1.0

關於docker export 和 docker save

  1. docker save將一個映象儲存為一個tar包
  2. docker export將一個容器快照儲存為一個tar包

docker export 匯出的容器快照檔案將丟棄所有的歷史記錄和元資料資訊,只儲存容器當前的快照狀態;而另一個將儲存所有內容

刪除映象

docker rmi [options] image [image ...]
docker images --digests 檢視映象的具體資訊1
docker images -q reponame輸出所有倉庫名的映象id

# 刪除所有映象
docker rmi $(docker images -q reponames)
docker rmi $(docker images -qa)

【注意:刪除映象前,需要先將使用該映象的容器刪除】

建立私人倉庫

詳細配置參考