Docker 精通之常用命令

Docker 精通系列

  • Docker 精通之入門
  • Docker 精通之微服務
  • Docker 精通之常用命令
  • Docker 精通之 Dockerfile

配置文件路徑

/etc/sysconfig/docker?

docker鏡像及容器目錄

主目錄:/var/lib/docker

容器存放目錄:/var/lib/docker/containers/

鏡像存放目錄:/var/lib/docker/image

幫助信息

docker --help

docker command --help????# 比如?docker image --help

docker info ???????????????????????# 顯示docker的安裝信息,及運行狀態

docker version??????????????????# 版本版本信息

docker container 相關

$ docker container ls? ? ? ? ? ?

列出本機正在運行的容器

$ docker container ls --all? ?

列出本機所有容器,包括終止運行的容器

$ docker container kill [containID]? ? ?

終止容器

$ docker container rm [containerID] ?

刪除終止運行的容器,參數如下:

  • -v:刪除容器掛載的數據卷,默認情況下刪除容器不會刪除數據卷,要刪除一個數據卷,必須在刪除最后一個掛載該數據卷的容器時使用 -v 參數
  • -f:如果容器正在運行,則強行終止并刪除

$ docker [container] run -p 8000:3000 koa-demo?

運行容器,詳細參數如下:

  • -p 8000:3000? ? ?# 容器的 3000 端口映射到本機的 8000 端口。
  • -d? ? ? ? ? ? ? ? ? ? ? ?# 容器啟動后,在后臺運行
  • -it? ? ? ? ? ? ? ? ? ? ? ?#?容器的 Shell 映射到當前的 Shell,然后你在本機窗口輸入的命令,就會傳入容器。-t分配一個偽終端并綁定在容器的標準輸入上,-i讓容器的標準輸入保持打開
  • koa-demo:0.0.1 # image 文件的名字(如果有標簽,還需要提供標簽,默認是 latest 標簽)。
  • /bin/bash? ? ? ? ? ? # 容器啟動以后,內部第一個執行的命令。這里是啟動 Bash,保證用戶可以使用 Shell。
  • --name flp? ? ? ? ? # 容器的名字flp
  • --rm? ? ? ? ? ? ? ? ? ? # 容器終止運行后自動刪除容器文件。
  • --volume "$PWD/":/var/www/html? # 將當前目錄($PWD)映射到容器的/var/www/html(Apache 對外訪問的默認目錄)。因此,當前目錄的任何修改,都會反映到容器里面,進而被外部訪問到,可指定多個;
  • --volume /var/www/html? ? ? ? ? ? ? ? # 在容器內部創建一個共享數據卷,數據卷只有在未被任何容器使用時才能被刪除
  • --volume-from 容器ID? ? ? ? ? ? ? ? ? ? # 掛載容器ID中的共享數據卷,實現在容器內部共享數據卷
  • -v? ?# 同--volume
  • :ro? # 只讀,"$PWD/":/var/www/html:ro
  • --env MYSQL_ROOT_PASSWORD=123456 # 向容器進程傳入一個環境變量MYSQL_ROOT_PASSWORD,該變量會被用作 MySQL 的根密碼。
  • --env MYSQL_DATABASE=wordpress? ? ? ? ? ?# 向容器進程傳入一個環境變量MYSQL_DATABASE,容器里面的 MySQL 會根據該變量創建一個同名數據庫(本例是WordPress)
  • --link wordpressdb:mysql ????# 表示 WordPress 容器要連到wordpressdb容器,冒號表示該容器的別名是mysql
  • -p 127.0.0.2:8080:80 ??????????# 將容器的 80 端口映射到127.0.0.2的8080端口
  • -P? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 隨機映射一個端口
  • --cpuset-cpus=0-3? ? ? ? ? ? ? ?# 設定容器可以使用哪些主機上的cpu核心,0-3:表示0核~3核,4個核心,1,2:表示1核和2核
  • --memory=104857600? ? ? ? ?# 可以使用主機內存的上限,單位是B,這里表示100M 1024B * 1024B * 100

使用docker run命令來啟動容器,docker在后臺運行的標準操作包括

  • 1.檢查本地是否存在指定的鏡像,不存在則從公有倉庫下載
  • 2.使用鏡像創建并啟動容器
  • 3.分配一個文件系統,并在只讀的鏡像層外面掛載一層可讀可寫層
  • 4.從宿主主機配置的網橋接口中橋接一個虛擬接口道容器中去
  • 5.從地址池分配一個ip地址給容器
  • 6.執行用戶指定的應用程序
  • 7.執行完畢之后容器被終止

$ docker container start [containerID]

前面的docker container run命令是新建容器,每運行一次,就會新建一個容器。如果希望重復使用容器,就要使用docker container start命令,它用來啟動已經生成、已經停止運行的容器文件。

$ bash container stop [containerID]

前面的docker container kill命令終止容器運行,相當于向容器里面的主進程發出 SIGKILL 信號。而docker container stop命令也是用來終止容器運行,相當于向容器里面的主進程發出 SIGTERM 信號,然后過一段時間再發出 SIGKILL 信號。這兩個信號的差別是,應用程序收到 SIGTERM 信號以后,可以自行進行收尾清理工作,但也可以不理會這個信號。如果收到 SIGKILL 信號,就會強行立即終止,那些正在進行中的操作會全部丟失。

$ docker container logs [containerID]?

命令用來查看 docker 容器的輸出,即容器里面 Shell 的標準輸出。如果docker run命令運行容器的時候,沒有使用-it參數,就要用這個命令查看輸出。

  • -f:實時輸出

$ docker container exec -it [containerID] /bin/bash?

用于進入一個正在運行的 docker 容器。如果docker run命令運行容器的時候,沒有使用-it參數,就要用這個命令進入容器。一旦進入了容器,就可以在容器的 Shell 執行命令了。也可以把 /bin/bash 換成命令,作用是在容器里執行命令,并輸出結果

$ docker container cp [containID]:[/path/to/file] [/path/to/file]

# docker container cp命令用于從正在運行的 Docker 容器里面,將文件拷貝到本機。也可以將兩個參數換下位置,就是將本機文件拷貝到docker

$ docker attach 容器ID? ?

連接到啟動的容器

docker 命令

  • docker search -s 100 centos ??#搜索鏡像centos,-s :搜索星標至少為100的鏡像
  • docker inspect 鏡像ID? ? ? ? ? ? ?#查看鏡像內邊信息
  • docker restart 容器ID? ? ? ? ? ? ? #重啟鏡像
  • docker?pull?image_name? ? ? ? ?#下載鏡像
  • docker?ps? ? ? ?#列出當前所有正在運行的container??
    • ?-a? ?#列出所有的container??
    • ?-l? ? #列出最近一次啟動的container????
  • docker rm?容器ID #刪除container
    • -f:如果容器正在運行,則強行終止并刪除
    • -v:刪除容器掛載的數據卷,默認情況下刪除容器不會刪除數據卷,要刪除一個數據卷,必須在刪除最后一個掛載該數據卷的容器時使用 -v 參數
  • docker rm `docker ps -a -q` #刪除所有容器
  • docker kill `docker ps -q`
  • docker rmi `docker images -q -a`
  • docker wait 容器ID #阻塞對容器的其他調用方法,直到容器停止后退出
  • docker top 容器ID? #查看容器中運行的進程
  • docker diff?容器ID? #查看容器中的變化
  • docker inspect?容器ID #查看容器詳細信息(輸出為Json)
    • -f:查找特定信息,如docker inspect?-f?'{{ .NetworkSettings.IPAddress }}'
  • docker port?容器ID?5000 #查看容器的5000端口對應本地機器的IP和端口號

容器,鏡像導入導出

docker export 容器ID > container.tar           #導出容器migrate.tar,相當于快照
docker import container.tar - test/ubuntu      #導入鏡像,鏡像名字為test/ubuntu,load不可以指定名字
cat container.tar| docker import - test/ubuntu #導入鏡像,鏡像名字為test/ubuntu,load不可以指定名字docker save -o image.tar 鏡像ID ?#將一個鏡像導出為文件,會保存鏡像的所有記錄
docker load --input image.tar??? #導入image.tar到本地鏡像,import可以指定名字
docker load < image.tar ???? ????#導入image.tar到本地鏡像,import可以指定名字

將 container 持久化為一個 image

$ docker?commit?容器ID?新鏡像名?

  • -a,?--author=""? ? ? # 作者?
  • -m,?--message=""?# 注釋
  • -p? ? ? ? ? ? ? ? ? ? ? ? ? # 在commit是,暫停容器執行

發布 image 到倉庫

發布 image 需要有對應的tag?

# 1、首先是登錄docker hub 
[root@docker-test1 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username (wangshibo): you_name
Password:
Login Succeeded[root@docker-test1 ~]# docker push wangshibo/myubuntu:v1
The push refers to a repository [docker.io/wangshibo/myubuntu]
An image does not exist locally with the tag: docker.io/wangshibo/myubuntu# 2、這里需要將ubuntu:v1鏡像改名,在名稱前加上自己的docker hub的Docker ID,即wangshibo
[root@docker-test1 ~]# docker tag 6ce4aedd12cd wangshibo/myubuntu:v1
[root@docker-test1 ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
myubuntu             v1                  6ce4aedd12cd        6 minutes ago       84.1 MB
wangshibo/myubuntu   v1                  6ce4aedd12cd        6 minutes ago       84.1 MB# 3、再次進行推送(注意:下面的v1的tag標簽可以不打,默認是latest)。推送操作時間稍微會有一點長,耐心等待~
[root@docker-test1 ~]# docker push myubuntu:v1           
The push refers to a repository [docker.io/myubuntu]
b5948ba9486d: Pushed
8d7ea83e3c62: Mounted from library/ubuntu
...
a30b835850bf: Mounted from library/ubuntu
v1: digest: sha256:e9cd9075d262848a307c92751e1a5890d883b814a31abd118161442461a1ca2d size: 1564# 4、最后登錄自己的Docker Hub,即https://hub.docker.com/,登錄后,在Repositories里面就可以看到自己在上面推送的鏡像myubuntu:v1了,這是個對外的鏡像,可以在網絡上下載。在Docker hub上可以看到這個鏡像的下載命令(注意下載時跟上tag標簽,如果是latest的默認tag可以不跟)
也可以直接在Docker hub上刪除這個鏡像(Repositories-鏡像-Settings-delete)# 5、在本機刪除這個鏡像
[root@docker-test1 ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
myubuntu             v1                  6ce4aedd12cd        15 minutes ago      84.1 MB
wangshibo/myubuntu   v1                  6ce4aedd12cd        15 minutes ago      84.1 MB# 注意上面有兩個6ce4aedd12cd的鏡像ID,此時直接使用這個鏡像ID是刪除不掉的
[root@docker-test1 ~]# docker rmi 6ce4aedd12cd
Error response from daemon: conflict: unable to delete 6ce4aedd12cd (must be forced) - image is referenced in multiple repositories# 應該先刪除docker tag改名前的鏡像,使用鏡像名稱刪除。(一般在docker tag鏡像改名后,最好刪除改名前的鏡像)
[root@docker-test1 ~]# docker rmi myubuntu:v1
Untagged: myubuntu:v1
Untagged: wangshibo/myubuntu@sha256:e9cd9075d262848a307c92751e1a5890d883b814a31abd118161442461a1ca2d[root@docker-test1 ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
wangshibo/myubuntu   v1                  6ce4aedd12cd        15 minutes ago      84.1 MB# 這個時候就可以刪除鏡像ID刪除了
[root@docker-test1 ~]# docker rmi 6ce4aedd12cd
Untagged: wangshibo/myubuntu:v1
Deleted: sha256:6ce4aedd12cda693d0bbb857cc443a56f9f569106e09ec61aa53563d0932ea4d
Deleted: sha256:0ddeb6a16badd042914c2e72b9ef0331550c1cdcc4bdc6650a90cd9f57f1501b
[root@docker-test1 ~]# docker images         
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu    16.04               7aa3602ab41e        5 weeks ago         115 MB

docker image 相關

$ docker image ls -a //??docker image ls --all

列出本機的所有 image 文件。

$ docker image rm [imageName]

刪除 image 文件

$ docker image tag [imageName] [username]/[repository]:[tag]

打標簽。$ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1? ? ?#?koa-demos:0.0.1 是 image 的 name,。ruanyf/koa-demos(新的名字):0.0.1(tag)

$ docker image build -t [username]/[repository]:[tag] .?

也可以不標注用戶名,重新構建一下 image 文件。

$ docker image push [username]/[repository]:[tag]

發布 image 文件。

$ docker image pull library/hello-world

將 image 文件從倉庫抓取到本地。library/hello-world是 image 文件在倉庫里面的位置,其中library是 image 文件所在的組,hello-world是 image 文件的名字。由于 Docker 官方提供的 image 文件,都放在library組里面,所以它的是默認組,可以省略。因此,上面的命令可以寫成這樣。$ docker image pull hello-world

$ docker image build -t koa-demo:0.0.1 .

創建image 文件,會用到dockerfile文件,參考?Docker 精通之 Dockerfile

  • ????.???????#注意最后有一個 "."代表本地路徑
  • ????-t?????#指定image名字
  • ????: ????#冒號后面可以添加標簽

docker images 相關

$ docker images -a

展示本地的所有鏡像,默認隱藏中間的鏡像

$ docker images --digests

展示鏡像的摘要

$ docker images -f xxxx

查看對應的過濾條件,這個過濾標簽的格式是 “key=value”,如果有多個條件,則使用這種 --filter "key1=value" --filter "key2=value"。比如:過濾沒有打標簽的鏡像docker images -f "dangling=true",當前支持的過濾配置的key為:

  • dangling:顯示標記為空的鏡像,值只有true和false
  • label:這個是根據標簽進行過濾,其中lable的值,是docker在編譯的時候配置的或者在Dockerfile中配置的
  • before:這個是根據時間來進行過濾,其中before的value表示某個鏡像構建時間之前的鏡像列表
  • since:跟before正好相反,表示的是在某個鏡像構建之后構建的鏡像
  • reference:這個是添加正則進行匹配

$?docker rmi $(docker images -f "dangling=true" -q)

表示清理當前repo:tag為<none>的鏡像。在對應的鏡像repo:tag構建新的鏡像的時候,舊的鏡像就會從repo:tag中移走,進而成為<none>,這個時候,我們就可以對這些進行清理

$ docker images --format

這個是進行對展示的進行格式化話展示

PlaceholderDescription
.IDImage ID
.RepositoryImage repository
.TagImage tag
.DigestImage digest
.CreatedSinceElapsed time since the image was created
.CreatedAtTime when the image was created
.SizeImage disk size

$?docker images -q

這個其實跟 docker images --format "{{.ID}}" 效果是一樣的,是只展示ID

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454787.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454787.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454787.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

世界500強面試題(經典)

本書中的問題&#xff0c;是軟件業人士在面試時常問的&#xff0c;其中大多數出自微軟公司&#xff0c;也有一些來自世界500強公司中的其 他公司。其實道理是相通的&#xff0c;認真領會&#xff0c;加以變通&#xff0c;當你讀完全書時&#xff0c;你會發現你已經找到了一塊進…

php 獲取字符串中的url,php使用正則表達式獲取字符串中的URL

今天寫一個問答系統上線之后發現有很多人發鏈接了,由于業務部門要我們過濾掉網站地址了,下面我給大家分享一個提取字符串url地址函數,代碼如下:$str 本文實例講述了php匹配字符串里所有URL地址的方法。http://www.manongjc.com 分享給大家供大家參考;preg_match_all("/htt…

如何提高安卓代碼的質量和語法

本文講的是如何提高安卓代碼的質量和語法&#xff0c;在這篇文章中&#xff0c;我會介紹幾種不同的方式&#xff0c;讓你通過自動化工具提高你的Android代碼質量&#xff0c;包括 Checkstyle&#xff0c; Findbugs&#xff0c;PMD&#xff0c; 當然&#xff0c;還有我們最熟悉的…

洛谷 U3357 C2-走樓梯

https://www.luogu.org/problem/show?pidU3357 題目背景 在你成功地解決了上一個問題之后&#xff0c;方方方不禁有些氣惱&#xff0c;于是他在樓梯上跳來跳去&#xff0c;想要你求出他跳的方案數。.. 題目描述 方方方站在一個n階樓梯下面&#xff0c;他每次可以往上跳一步或兩…

Liunx 系統調優

Sysctl命令用來配置與顯示在/proc/sys目錄中的內核參數&#xff0e;如果想使參數長期保存&#xff0c;可以通過編輯/etc/sysctl.conf文件來實現。 命令格式&#xff1a;sysctl [-n] [-e]-w # 臨時改變某個指定參數的值&#xff0c;如sysctl -w net.ipv4.ip_forward1-a # 顯示…

php多文件上傳存儲到表,PHP 實現一種多文件上傳的方法

搜索熱詞之前在實現表單中file類型input選擇多圖片的時候找到一種方式 也許不是最好的但親測可行且支持ie7以上以及chrome瀏覽器在表單中使用正常多文件選擇multiple屬性PHP;">然后使用AjaxFileUpload或其他方式提交將對應命名的file文件 $file[‘image] 轉化為 json打…

CentOS7設置自定義開機啟動,添加自定義系統服務

Centos 系統服務腳本目錄&#xff1a; /usr/lib/systemd/ 有系統&#xff08;system&#xff09;和用戶&#xff08;user&#xff09;之分&#xff0c;如需要開機沒有登陸情況下就能運行的程序&#xff0c;存在系統服務&#xff08;system&#xff09;里&#xff0c;即&#xf…

成功應聘Intel的真實經歷

編者按&#xff1a;INTEL&#xff08;英特爾&#xff09;公司創建于1968年&#xff0c;是全球最大的芯片制造商&#xff0c;Intel研究中心更是匯聚了全球無數的精英&#xff0c;一批年輕人抱著夢想走入了這里&#xff0c;過去我們談到了太多關于Intel技術與市場方面&#xff0c…

Kotlin學習記錄1

參考我的博客&#xff1a;http://www.isedwardtang.com/2017/09/02/kotlin-primer-1/轉載于:https://www.cnblogs.com/EdwardTang/p/7476787.html

Keepalived配置文件詳解

keepalivedkeepalived是集群管理中保證集群高可用的一個服務軟件&#xff0c;其功能類似于heartbeat&#xff0c;用來防止單點故障。keepalived工作原理keepalived是以VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;即虛擬路由冗余協議&#xff09;協議為實現…

php高等數學,中國大學《高等數學(四)》期末答案高校邦《PHP語言程序設計》見面課答案...

參考答案如下Conversation 2Pretco-A12.9-10.mp3:9、中國 A) Some shoes are missing. B) Itsdelivery is delayed.C) The order is cancelled. D) Some packages are damaged.10、中國 A) Giving an additional discount. B) Renewing the contract.C) Sending the goods by a…

深入剖析ThreadLocal實現原理以及內存泄漏問題

關于ThreadLocalMap<ThreadLocal, Object>弱引用問題&#xff1a; 當線程沒有結束&#xff0c;但是ThreadLocal已經被回收&#xff0c;則可能導致線程中存在ThreadLocalMap<null, Object>的鍵值對&#xff0c;造成內存泄露。&#xff08;ThreadLocal被回收&#xf…

解讀《普通大學應屆畢業生如何成功應聘微軟》

《普通大學應屆畢業生如何成功應聘微軟》這篇文章很有實踐性&#xff0c;我所要提的&#xff0c;是最后一道面試&#xff0c;也就是唐駿本人對作者的面試&#xff0c;這一輪看似平常的面試大有門道。仔細想想&#xff0c;為什么這些問題由唐駿本人來問&#xff0c;他為什么要這…

grep 命令的 12 個實例

2019獨角獸企業重金招聘Python工程師標準>>> 你是否遇到過需要在文件中查找一個特定的字符串或者樣式&#xff0c;但是不知道從哪兒開始&#xff1f;那么,就請grep來幫你吧。 grep是每個Linux發行版都預裝的一個強有力的文件模式搜索工具。無論何種原因&#xff0c;…

php 怎么從memcache緩存數據中統計某一字段總數,php和memcache統計在線人數的方法...

$mc new Memcache ();// 連接memcache$mc->connect("127.0.0.1", 11211);// 獲取 在線用戶 IP 和 在線時間數據$online_members $mc->get(online_members);// 如果為空&#xff0c;初始化數據if (!$online_members) {$online_members array();}// 獲取用戶i…

ubuntu之ufw防火墻

UFW是Ubuntu下的一個主機端的iptables類防火墻配置工具(底層調用iptables來處理)。這個工具的目的是提供給用戶一個可以輕松駕馭的界面&#xff0c;就像包集成和動態檢測開放的端口一樣。雖然功能較簡單&#xff0c;但對桌面型應用來說比較實用&#xff0c;基本常用功能都有&am…

background-size在IE8不兼容問題

background-size在IE8及以下瀏覽器不兼容&#xff1b;要解決的話要用濾鏡&#xff1a; filter: progid: DXImageTransform.Microsoft.AlphaImageLoader( src, sizingMethodscale); 注意&#xff1a;此處src的路徑必須是絕對路徑&#xff0c;相對路徑不可以&#xff01; 當寫完…

程序員 大牛 面試

水 滴 石 穿 -- 找工作記 -- yurking&#xff08;yurkinggmail.com&#xff09; 一日一錢&#xff0c;千日千錢&#xff0c;繩鋸木斷&#xff0c;水滴石穿! 這個東西寫出來有一段時間了&#xff0c;但是一直沒發&#xff0c;想著等有時間了再好好的看一看&#xff0c;改一…

Linux : shell基礎(慕課網Linux達人養成計劃課程筆記)

Shell概述 shell是Linux中的命令行解釋器&#xff0c;為用戶提供了一個向Linux內核發送請求一邊運行程序的界面系統級程序&#xff0c;用戶可以用shell來啟動、掛起、停止甚至編寫一些程序。shell還是一個功能相當強大的編程語言&#xff0c;易編寫&#xff0c;易調試&#xff…

基于matlab的大米,大米顆數計算MATLAB軟件

應用背景大米是人類的主食之一&#xff0c;是稻谷經清理、礱谷、碾米、成品整理等工序后制成的成品。人們購買米大多采用直接稱量的方法&#xff0c;市面上也有許多儀器采用光電傳感器等方式用于生產加工時米粒的計數。然而這樣的方法都比較依賴于設備&#xff0c;不方便人們日…