2.1、鏡像常用命令
01)、查找鏡像:docker search 鏡像名
02)、拉取鏡像:docker pull 鏡像名:版本號
03)、刪除鏡像:docker rmi 鏡像名
04)、獲取本地鏡像列表:docker images
2.1.1、虛懸鏡像
虛懸鏡像:沒有鏡像名,也沒有標籤的鏡像;
導致原因:構建和刪除鏡像時發生錯誤,可能會導致;
查詢命令:docker images -f dangling=true
刪除命令:
方式一:docker image prune
方式二:docker rmi $(docker images -q -f dangling=true)
2.2、容器常用命令
01)、啓動容器:
docker run --name <容器名稱> -d -p <主機端口:容器端口> <鏡像名稱>
-d:後台運行
-p:端口映射
舉例:docker run --name nginx-test -d -p 80:80 nginx
02)、進入docker容器內部
方式1:docker exec -it <容器名稱、容器 ID> /bin/bash
方式2:docker attach <容器 ID>
注意:使用 attach 的方式進入容器內部,如果從這個容器退出,會導致容器停止,所以不推薦使用該方式。
方式3:交互式啓動進入容器內部
docker run -it [鏡像名稱、鏡像id] /bin/bash
注意使用該方式啓動並進入容器內部,退出方式有2種,
exit退出,容器停止;
ctrl+p+q退出,容器不會停止;
03)、查看容器
查看所有的容器(包括啓用和未啓用)命令:docker ps -a
查看啓用的容器命令:docker ps
04)、啓動已停止運行的容器
docker start <容器 ID、容器名稱>
05)、停止容器
docker stop <容器 ID、容器名稱>
06)、重啓容器
docker restart <容器 ID、容器名稱>
07)、刪除容器
方式1:普通刪除,容器在啓動狀態無法刪除
docker rm <容器 ID、容器名稱>
方式2:強制刪除,容器在啓動狀態會強制刪除並關閉
docker rm -f <容器 ID、容器名稱>
方式3:批量刪除
docker rm 容器1 容器2
docker rm ${docker ps -a -q}
08)、複製容器文件到主機
docker cp <容器id、容器名稱>:<容器文件路徑> <主機文件路徑>
舉例:docker cp nginx-test:/usr/share/nginx/html/50x.html /usr/local/nginx/html/50x.html
09)、複製主機文件到容器
docker cp <主機文件路徑> <容器id、容器名稱>:<容器文件路徑>
舉例:docker cp /usr/local/nginx/html/50x.html nginx-test:/usr/share/nginx/html/50x.html
10)、獲取容器的元數據
docker inspect <容器id、容器名稱>
2.3、目錄和文件掛載
2.4、docker commit
docker commit 提交容器副本使其成為一個新的鏡像
命令:
docker commit -m="提交的描述信息" -a="作者" 容器id 目標鏡像名:標籤名
舉例:
針對ubuntu容器新增vim功能
apt-get update
apt-get -y install vim
提交新鏡像到本地:
docker commit -m="添加vim功能" -a="hs" 51042a48b860 hs/myubuntu:1.1
2.4、docker私有倉庫(registry版)
1、下載鏡像私服鏡像Docker Registry
docker pull registry
2、運行私有庫Registry,相當於本地有個Docker hub
docker run --name registry -d -p 5000:5000 -v /usr/local/images-registry/:/tmp/registry --privileged=true registry
3、修改配置文件【/etc/docker/daemon.json】配置鏡像私有倉庫地址
{
"registry-mirrors": ["http://hub-mirror.c.163.com"], # 加速鏡像設置
"insecure-registries": ["10.0.24.11:5000"] # 私有倉庫設置
}
注意:docker 默認不允許http方式推送鏡像,通過配置“insecure-registries”取消這個限制;
修改配置注意重啓docker:systemctl restart docker
4、案例演示創建一個新鏡像,ubuntu安裝ifconfig命令
docker run -it hs/myubuntu:1.1 /bin/bash
apt-get update
apt-get install net-tools
docker commit 提交容器副本使其成為一個新的鏡像
命令格式:docker commit -m="提交的描述信息" -a="作者" 容器id 目標鏡像名:標籤名
容器外執行:
docker commit -m="ifconfig cmd add" -a="hs" d161a30f15af hs/myubuntu:1.2
5、將新鏡像修改為符合私服規範的Tag
docker tag hs/myubuntu:1.2 10.0.24.11:5000/hs/myubuntu:1.2
6、curl驗證私服庫有哪些鏡像
curl -XGET http://10.0.24.11:5000/v2/_catalog
7、push推送到私服
docker push 10.0.24.11:5000/hs/myubuntu:1.2
8、curl驗證私服庫有哪些鏡像2
curl -XGET http://10.0.24.11:5000/v2/_catalog
9、pull到本地並運行
docker pull 10.0.24.11:5000/hs/myubuntu:1.2
docker run -it 鏡像id、鏡像名 /bin/bash
2.5、docker私有倉庫(harbor版)