Docker-基礎命令
阿新 • • 發佈:2020-12-01
一、docker基本組成
映象(image):
映象就好比是一個模板,可以通過這個模板來建立容器服務。
比如tomcat映象==》run==》tomcat01容器(提供服務)。
可以通過這個映象可以建立多個容器(最終服務的執行就是在容器中)
容器(container):
利用容器技術,獨立執行一個或者一個組應用。通過映象來建立。目前可以將其理解為一個簡易版的各種環境
倉庫(repository):
存放映象的地方,分共有倉庫和私有倉庫
Docker與VM的比較
1.docker有比虛擬機器更少的抽象層
2.docker直接使用宿主機的核心
二、docker映象基本命令
docker version # 檢視版本 docker info # 檢視詳情 docker images # 檢視映象 引數:-a 顯示所有映象 -q 只顯示映象id -aq 連用表示顯示所有映象的id docker pull # 從倉庫拉去映象,這個倉庫可以自己配置源 docker pull mysql:5.7 拉取mysql,指定版本,沒寫版本預設最新版 docker rmi -f 映象id 映象id 映象id 映象id# rmi=remove images方便記憶 docker rmi -f $(docker images -aq) 刪除所有映象 docker image prune 引數 -a:刪除所有未被使用的映象 -f:強制刪除 docker search 映象名 docker search -f is-official=true redis 搜尋官方映象 f相當於filter docker search -f starts=100 搜尋收藏數大於一百的 docker search redis limit 5 docker tag [原映象倉庫url]/[原名稱空間]/[原倉庫名稱]:[版本號] [新的名字] docker tag redis:v2 # 例子 docker history
三、docker容器命令
docker run 命令 引數 --name="test1" #容器名字,將名稱加入docker dns中 -d 後臺方式執行,即用守護程序的方式執行一個容器 -it 使用互動方式執行,進入容器檢視內容 -p 小寫,指定容器埠 -p ip:主機埠:容器埠 -p 主機埠:容器埠(常用) -p 容器埠 容器埠 -P 大寫,隨機埠 -v 掛載儲存卷 比如部署django,檔案可以使用我們主機的,而環境用docker的 docker run -v 主機目錄:容器內目錄 -e 在容器內設定一個環境變數 docker run -d -e NGINX_VERSION=1.19.5 nginx:1.19.5 比如我們登陸mysql的時候是需要賬號密碼的,我們在啟動mysql服務的時候就可以利用-e把mysql的密碼寫 進環境變數 docker run -d -P -e:MYSQL_ROOT_PASSWORD=123456 mysql:latest docker run -it centos /bin/bash # -it使用互動方式執行,進入容器檢視內容 exit # 退出容器 ctrl+p+q # 容器不停止退出 docker ps # 當前在執行的容器 docker ps -a # 當前在執行的容器+曾經執行過的容器 -n=2 顯示最近的兩個容器 -q 顯示容器的編號 -aq 顯示所有容器的編號 docker rm 容器id # 刪除容器 docker rm -f $(docker ps -aq) # 刪除所有容器 docker ps -aq | xargs docker rm # 刪除所有容器 啟動和停止容器的操作 docker start 容器id # 啟動 docker restart 容器id # 重啟 docker stop 容器id # 停止 docker kill 容器id # 強制停止 後臺啟動容器 docker run -d 映象名 docker run -d centos # docker ps會發現centos已經停止了,是因為docker容器在後臺執行的時候必要要有一個 # 前臺程序,docker發現沒有應用,就會自動停止 docker logs # 檢視日誌 # 造點日誌資料 docker run -d centos /bin/sh -c "while true;do echo 123;sleep 1;done" docker logs -ft --tail 10 容器id # 列印最後十行日誌 docker top 容器id # 檢視容器中的程序資訊 docker inspect 容器id # 檢視docker容器的元資料,出來的是json格式 # 進入當前正在執行的容器 # 通常我們容器是在後臺方式執行,有時候需要進入容器,修改一些配置等 docker exec -it 容器id /bin/bash # 方式一 docker attach 容器id # 方式二 # 區別: exec進入容器後開啟一個新的終端,可以在裡面操作,是常用的 attach進入容器正在執行的終端,不會啟動新的程序 # 從容器中拷貝檔案到主機上,拷貝的話和容器是否執行沒關係,就算關了也可以拷貝出來 docker cp 容器id:容器內的路徑 主機的路徑 當容器生命週期結束的時候,有時候我們就不要這個容器了,比如我們stop掉一個容器,使用docker ps 命令確實看不到他了,但是使用-a引數,還是可以看到,說明這個容器停止之後還是在我們機子上佔著空間的。 如果我們用再使用這個容器,其實重新run一個就行了,因為我們都是通過映象來啟動的,重新起一個就是一模一樣的。 設定--rm引數即可 docker run --rm -d redis # 儲存我們的容器為映象 export 和 import docker export 容器id或容器名稱 > 壓縮包名字 docker import 壓縮包 映象名字可包含路徑 docker export redis > test1.tar docker import test1.tar test/redis1:v1 # export匯出的是壓縮包,commit匯出的是映象,是不同的 # 匯出映象為壓縮包 docker save 映象名字或者id > 壓縮包名稱 引數-o 指定在一個壓縮包內儲存多個映象 docker load 壓縮包名稱 引數-i 解壓多個映象的壓縮包 docker save test/reids:v1 > test2.tar docker load < test2.tar docker load -i test2.tar export和save區別 export只儲存映象,save是完全儲存,包括名字,id,歷史記錄等等,所以兩者儲存的檔案大小不同save會更大 import的時候可以重新命名,load不行,原因基於第一條 save和export使用場景 1打包映象一般用save,打包容器一般用export 2儲存資訊需要歷史資訊,名字等等,使用save