1.停止所有的container,這樣才能夠刪除其中的images:
docker stop $(docker ps -a -q)
如果想要刪除所有container的話再加一個指令:
docker rm $(docker ps -a -q)
2.查看當前有些什么images
docker images
3.刪除images,通過image的id來指定刪除誰
docker rmi <image id>
想要刪除untagged images,也就是那些id為<None>的image的話可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
要刪除全部image的話
docker rmi $(docker images -q)
yum install docker 安裝服務
systemctl start docker.service 啟動服務
systemctl enable docker.service 開機啟動服務
docker pull centos 下載映像到本地
docker images centos 查看映像列表
docker run -i -t centos /bin/bash 以交互式啟動容器
docker run centos echo 'Hello World'
(1)啟動,systemctl start docker.service
(2)開機啟動,systemctl enable docker.service
(3)幫助,docker --help
(4)概要信息,docker info
(5)鏡像查看,docker images
(6)容器查看,即進程查看,docker ps -a
(7)最近容器查看, docker ps -l
(1)下載鏡像,docker pull nginx
(2)啟動容器,docker run -d -p 8080:80 nginx,把容器內的nginx的80端口,映射到當前服務器的8080端口,當前服務器的ip是192.168.1.120,瀏覽器輸入http://192.168.1.120:8080/,就可以看到nginx已啟動,
(3)再啟動多一個容器,docker run -d -p 8081:80 nginx,瀏覽器輸入http://192.168.1.120:8081/,就可以看到另外一個nginx已啟動
也可以通過curl 127.0.0.1:8080 來測試是否打開相應端口
(4)到這里就能體現出Docker部署應用和傳統部署應用的區別了,傳統部署的話,需要人工拷貝多一份nginx,再配置端口,而Docker部署的話,在已制作好的鏡像基礎上,一條命令就可以部署一個新的應用
(5) docker inspect a219737ce905 通過命令找到容器端口,可以宿主機直接訪問容器:http://172.17.0.2/:80
(1)docker ps -a 可以顯示容器id
(2)docker stop 8dc6a2b6f903 停止容器
(3)docker rm 8dc6a2b6f903 刪除容器
(4)docker ps 顯示當前正在運行的容器
docker commit 235923e34a nginx/centos 將自己構建好的235923e34a容器提交到本地當作下次可以再次使用的映像
docker run --name=nexus -i -t centos /bin/bash
docker inspect nexus
docker start -i nexus 重新啟動已經停止的容器
docker run --name=nexus -i -t centos /bin/bash CTRL + P CTRL + Q 退出交互式,以后台服務運行
docker attach nexus 可把后台運行服務提升到交互式運行
docker run --name=nexus -d centos /bin/sh -c "while true; do echo 'hello world'; sleep 1; done"
docker logs -t -f --tail 10 nexus 顯示nexus容器打印的最新10條日志,指定10為0時,顯示所有日志
docker top nexus 查看nexus進程運行情況
docker exec -i -t nexus /bin/bash 在已經啟動的nexus容器中加入新的進程bash,CTRL + P CTRL + Q 退出交互式,以后台服務運行,利用docker top nexus命令可以查看進程
docker stop nexus 發送一個停止信號,優雅停止容器
docker kill nexus 直接停止容器
docker network ls 查看容器創建的網絡
docker attach 容器ID 和 docker exec -it 容器ID 都可以將容器提升到前台。但是attach方法,當在容器中exit時,容器會退出,即使是啟動時候指定是后台啟動;而exec方法,在窗口中exit時,僅僅是退出當前操作終端,而不會退出進程。
這僅僅是docker的常用操作命令,要深入學習還要多看官方文檔,多學Linux系統操作。
推薦《第一本Docker書》作為入門。
docker下刪除兩個id相同的鏡像
今天建立docker容器的時候由於疏忽,鏡像的名字輸錯了,結果容器創建成功后,鏡像中出現兩個id相同的:
使用docker rmi e4a35914679d刪除的時候執行失敗:
Error response from daemon: conflict: unable to delete e4a35914679d (must be forced) - image is referenced in one or more repositories
提示應該是該id有兩個本地文件,不能用id刪除。
所以我想刪除所有鏡像docker rmi $(docker images -q),出現下面錯誤
Error response from daemon: conflict: unable to delete e4a35914679d (must be forced) - image is referenced in one or more repositories
后來在Stack Overflow刪看到使用repository和tag進行操作的,所以執行docker rmi docker.io/redis:3.2
再次查詢的時候只剩下一個鏡像,刪除OK。
所以,可以使用repository:tag的組合來刪除特殊的鏡像。