天天看點

第三章docker基礎指令

作者:青蛙王子日常

Docker常用指令

幫助指令

docker version    #顯示docker的版本資訊
docker info         #顯示docker的系統資訊,包括鏡像和容器的數量
docker 指令    --help    #幫助指令           

鏡像管理指令

docker images檢視所有本地主機上的鏡像

第三章docker基礎指令
第三章docker基礎指令

常用管理指令

第三章docker基礎指令

搜尋鏡像

docker search

[root@localhost ~]# docker search mysql
  
#可選項,通過搜尋來過濾
--filter=STARS=3000(或者選擇更高的收藏)
[root@localhost ~]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   12213     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4689      [OK]             

下載下傳鏡像

docker pull

[root@localhost ~]# docker pull mysql
……
Digest: sha256:0eb33f0094ef5351639d9d9847c963ee9f22f5631cde046babd4ec239aaeaf06
docker.io/library/mysql:latest
[root@localhost ~]#           

指定下載下傳的鏡像版本

docker pull mysql:5.7

[root@localhost ~]# docker pull mysql:5.7
……
Digest: sha256:5c6f1132190256d1ee63afc3bb383c890e8cb9f547bb1f8f15fecaa2a78e7de0
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7           

删除鏡像

docker rmi -f

删除指定鏡像    需要加上 IMAGE ID  ,也可以指定多個IMAGE ID進行删除
[root@localhost ~]# docker rmi -f 8b94b71dcc1e
Untagged: mysql:5.7
Untagged: mysql@sha256:5c6f1132190256d1ee63afc3bb383c890e8cb9f547bb1f8f15fecaa2a78e7de0
Deleted: sha256:8b94b71dcc1ee6376ac16096e01b8d92ba885e7b9ae560426af2312cc17fe0f7
…..           

遞歸删除全部鏡像

docker rmi -f $(docker imager -aq)

[root@localhost ~]# docker rmi -f $(docker images -aq)
Untagged: mysql:latest
Untagged: mysql@sha256:0eb33f0094ef5351639d9d9847c963ee9f22f5631cde046babd4ec239aaeaf06
Deleted: sha256:c1558761f285add928a651173d5e903c7bf2cd5d511d0bd6752fb082c41b56a2
…….           

容器指令

說明:我們有了鏡像才可以建立容器

docker pull centos           

建立容器并啟動

格式

第三章docker基礎指令

建立容器并進入

[root@localhost ~]# docker run -it centos /bin/bash
[root@c29252f4d995 /]# ls    檢視容器内的centos,基礎版本,很多指令都是不完善的
bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr
從容器中退回到主機
[root@c29252f4d995 /]# exit
exit
[root@localhost ~]#           

列出所有在運作的容器

docker ps 列出目前正在運作的容器

-a 加上-a參數 列出正在運作的容器+帶出曆史運作時的容器

-n=數字(輸入想要顯示最近幾個容器) #顯示最近建立的容器

-q #隻顯示容器的編号

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS                       PORTS     NAMES
c29252f4d995   centos         "/bin/bash"   18 minutes ago   Exited (130) 2 minutes ago             reverent_lewin
2066ae3c7a82   feb5d9fea6a5   "/hello"      4 hours ago      Exited (0) 4 hours ago                 priceless_davinci
[root@localhost ~]#           

退出容器

exit #容器直接停止并退出

Ctrl +P+Q #容器不停止退出

删除容器

docker rm 容器    删除指定容器,不能删除正在運作的容器,如果要強制删除 rm -f
docker rm -f $(docker ps -aq)    #删除所有的容器
docker ps -a -q|xargs docker rm    #删除所有的容器           

啟動和停止容器的操作

docker start  容器ID    #啟動容器
docker restart  容器ID   #重新開機容器
docker stop 容器ID    #強制停止目前容器           

背景啟動容器

#指令 docker run -d 容器名

[root@localhost ~]# docker run -d centos
#問題docker ps,發現centos停止了
#常見的坑:    docker 容器使用背景執行,就必須要有一個前台程序,docker發現沒有應用,就會自動停止
Nginx,容器啟動後,發現自己沒有提供服務,就會立刻停止,就是沒有程式了           

檢視容器日志

docker logs -f -t --tail    容器,沒有日志           

#自己編寫一段shell腳本

[root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"           
[root@localhost ~]# docker ps
CONTAINERID    IMAGE  
38254adcfa23   centos  
[root@localhost ~]#           

#顯示日志

    -tf    #顯示日志
    --tail number    #要顯示日志條數           
[root@localhost ~]# docker logs -tf --tail 10 38254adcfa23           

檢視容器中程序資訊ps

#指令 docker top +容器ID

[root@localhost ~]# docker top 38254adcfa23
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                18666               18645               0                   20:04               ?                   00:00:01            /bin/sh -c while true;do echo kuangshen;sleep 1;done
root                19740               18666               0                   20:19               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1           

檢視鏡像的中繼資料

docker inspect 容器ID

[root@localhost ~]# docker inspect 38254adcfa23
[
    {
        "Id": "38254adcfa23d6b3cabd5810d76fff1b8a5c39e364d29eaa051ccef0d8b6b7cc",
        "Created": "2022-03-06T12:04:58.195572401Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo kuangshen;sleep 1;done"
        ],           

進入目前正在運作的容器

#容器通常使用背景方式運作的,需要進入容器,修改一些配置

#指令 #進入容器并開啟一個新的終端,可以在裡面操作(常用)

docker exec -it 容器ID /bin/bash           

#測試

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
38254adcfa23   centos    "/bin/sh -c 'while t…"   36 minutes ago   Up 36 minutes             objective_moser
[root@localhost ~]# docker exec -it 38254adcfa23 /bin/bash
[root@38254adcfa23 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@38254adcfa23 /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 12:04 ?        00:00:05 /bin/sh -c while true;do echo kuangshen;sleep 1;done
root       1692      0  0 12:33 pts/0    00:00:00 /bin/bash
root       2190      0  0 12:41 pts/1    00:00:00 /bin/bash
root       2223      1  0 12:41 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root       2224   2190  0 12:41 pts/1    00:00:00 ps -ef           

#方法二

docker attach 容器id

#測試    #attach這個指令會進入正在執行的終端,不會啟用新的程序。
[root@localhost ~]# docker attach 容器ID
正在執行目前的代碼....           

從容器内拷貝到主機上

docker cp 容器id:容器内檔案路徑 目的主機路徑

[root@localhost home]# docker cp f2c8956edf2d:/home/test.java /home           
第三章docker基礎指令

限制容器資源參數