一、鏡像的管理
- 獲取鏡像并生成相關容器
# 拉取鏡像
docker pull alpine
# 默認是latest,也就是最新版本,也可指定版本(在鏡像名后邊加“:版本號”)
# 或者
# 從主機中導入鏡像到docker中
docker image load -i /test#生成容器
docker run -it alpine
# 默認讓容器執行bash 命令,也可以在容器名后邊直接寫想要讓容器運行的命令
# -it 表示容器要交互式運行
- 刪除鏡像,導出鏡像
# 查看運行過的容器(無論是否在運行中)
docker ps -a
# 刪除基于alpine 的容器
docker rm 容器id
# 刪除alpine 鏡像(可以使用id 也可以使用名稱,id可以是部分也可是全部)
docker rmi alpine
# 被刪除的鏡像不能有依賴其產生的容器# 批量刪除鏡像
docker rmi `docker images -aq `
# 或者
docker rmi $(docker images -aq)# 導出鏡像到主機的指定目錄/test文件夾中
docker image save alpine > /test
- 查看鏡像的信息
# 查看所有的鏡像
docker images
docker image ls
# 以上兩種的寫法是顯示出的內容是一致的# 查看指定鏡像
docker image 鏡像名稱# 查看全部鏡像的id(-q)
docker images -q#格式化顯示鏡像
docker images --format "{{.ID}}--{{.Repository}}"
# 寫作格式:docker images --format "{{.列名}}自己寫的,隨便啥符號都行{{.列名}}"
# 以表格的形式顯示鏡像
docker images --format "table{{.ID}}--{{.Repository}}"# 查看鏡像的詳細信息
docker image inspect 鏡像id
向dockerhub中搜索指定鏡像
docker search 鏡像名
二、容器的管理
docker run 表示創建+啟動的命令
docker run 鏡像名(如果鏡像不存在本地,則會在線去下載該鏡像)
注意:容器內的進程必須處于前臺運行的狀態,否則容器就會直接退出。但容器的運行可以在后臺。注意區分。
實例:
docker run ubuntu:20.04
# 這個寫法,會產生獨立的容器記錄。因為容器內沒有程序在運行,因此容器直接關閉
docker run -it ubuntu:20.04 bash
# 這是正確的寫法,以交互的方式運行ubuntu20.04,且在容器內執行bashdocker run ubuntu:20.04 ping baidu.com
# 啟動ubuntu20.04容器,在容器內執行ping百度的命令,這個命令是在前臺運行的,成功的卡住了終端
docker run -d ubuntu:20.04 ping baidu.com
# docker ps可以看到的容器;-d 參數,讓容器在后臺跑著(相對宿主機而言),容器中的程序在容器的前臺運行,因此容器沒有掛# 查看至今為止容器內的所有日志
docker logs 容器id
# -f 表示刷新容器日志
docker logs -f 容器id
# 可配合管道使用 docker logs 容器id | tail -5docker exec -it 容器id bash
# 進入正在運行的容器空間內(exec大概率配合-it,進入容器內要交互式地做操作) docker container inspect 容器id
# 查看容器的詳細信息,用于高級調試。顯示json數組:容器運行狀態,容器管理的數據docker port 容器id
# 查看容器內的端口轉發情況:docker commit 容器id 新的鏡像名
# 容器的提交
# 運行基礎的ubuntu:20.04, 在容器里裝something,然后提交新的鏡像
# 新的鏡像,再運行出的容器,默認就攜帶something了docker info
# 查看docker服務的信息
- 在運行容器時,常用的參數總結
run常用的參數 | 含義 |
---|---|
-it | 以交互的方式運行容器 |
-d | 將容器運行到后臺 |
–rm | 容器結束后自動刪除容器 |
-p 宿主機端口:容器內暴露的端口 | 容器是獨立的網絡空間,自己的ip和端口,因此在主機上查看運行的時候需要將端口映射到主機的端口 |
–name | 設置容器的名字 |
-P | 隨機端口映射,隨機訪問主機的空閑端口(0-65535)映射到容器內打開的端口 |
-v 主機上文件夾的絕對路徑: 虛擬機上文件夾的絕對路徑 | 將主機上文件夾的所有文件映射到虛擬機的指定文件夾中(之間文件夾中的內容映射過去了,但是文件夾本身沒有到指定文件夾下) |