Docker的基礎知識(二)
阿新 • • 發佈:2020-08-04
Docker的基礎知識(二)
搜尋映象
docker search <映象名>
[root@web01 ~]# docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 6119 [OK] ansible/centos7-ansible Ansible on Centos7 132 [OK] consol/centos-xfce-vnc Centos container with "headless" VNC session… 118 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … 115 [OK] centos/systemd systemd enabled base container. 86 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 79 imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 58 [OK]
下載映象
docker pull <映象名>:<標籤>
[root@web01 ~]# docker pull hello-world Using default tag: latest latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202 Status: Downloaded newer image for hello-world:latest docker.io/library/hello-world:latest
列出本地映象列表
docker images
[root@web01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jumpserver/jms_koko 2.0.1 589d376dd1f0 5 weeks ago 356MB jumpserver/jms_guacamole 2.0.1 875616016472 5 weeks ago 659MB mysql/mysql-server 5.7 278f8eedd831 3 months ago 338MB
建立容器
docker run [options] <images> [command]
options:
-i:表示啟動一個可互動的容器,並持續開啟標準輸入
-t:表示使用終端關聯到容器的標準輸入輸出上(偽終端)
-d:表示將容器放置後臺執行
--rm:退出後刪除容器
--name:表示定義容器唯一名稱,若不指定,docker會自動生成
“run -d”一個容器後有一個問題,docker ps -a發現容器已經退出
原因:docker容器後臺執行,就必須要一個前臺程序;容器執行的命令如果不是那些一直掛起的命令(如top,tail),就會自動退出
[root@web01 /server]# docker run -d ubuntu /bin/sh -c "tail -f /etc/passwd "
7c53320ff9e2fe5ae052c82e7fd2cb84a8165705a0f6bc32a560267bb74d1fa4
[root@web01 /server]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c53320ff9e2 ubuntu "/bin/sh -c 'tail -f…" 4 seconds ago Up 4 seconds serene_albattani
檢視容器列表
docker ps
#-a 選項列出所有容器,包括終止的容器
[root@web01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
50d961ce27da jumpserver/jms_koko:2.0.1 "/bin/bash" About a minute ago Exited (127) 8 seconds ago jumpserver
‘啟動/重啟/停止/刪除’ 容器
docker start/restart/stop/rm <容器名>/<或容器ID>
[root@web01 ~]# docker start 50d961ce27da
50d961ce27da
[root@web01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
50d961ce27da jumpserver/jms_koko:2.0.1 "/bin/bash" 4 minutes ago Up 3 seconds
exit容器停止退出,ctrl+P+Q 容器不停止退出
檢視容器日誌
docker logs -f -t --tail <容器ID>
-t:加入時間戳
-f:跟隨最新的日誌列印
--tail <數字>:顯示最後多少條
[root@web01 ~]# docker run -d --name hello ubuntu /bin/sh -c "while true;do echo hello;sleep 2;done" #後臺執行ubuntu容器,執行指令碼:2秒輸出一次'hello'.
[root@web01 ~]# docker logs -tf --tail 3 hello
2020-08-04T03:58:04.031315538Z hello
2020-08-04T03:58:06.032629017Z hello
2020-08-04T03:58:08.033905089Z hello
檢視容器內部細節
docker inspect <容器名>
連線容器
docker attach <容器名>
若執行DB或伺服器應用程式將無法進行輸入,只能看到輸出
缺點:如果兩個視窗都attach到同一容器中,兩個視窗操作會同步,要退出都退出
從外部執行容器內的命令
docker exec <容器名> <命令> <引數>
#謹慎使用exec,會對容器造成意外影響
#exec 只能在容器執行時使用
[root@web01 ~]# docker exec hello echo "hello world"
Error response from daemon: Container ccf9d9b6fc3133bd2c9bb82917a50c813b1f9342ad23dacd470f3605991ad7a5 is not running
[root@web01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
521f6ecdefe9 ubuntu "/bin/bash" 3 seconds ago Up 2 seconds hello
[root@web01 ~]# docker exec hello echo "hello world"
hello world
從容器內拷貝檔案到主機上
docker cp <容器名>:/路徑/檔案 /本地路徑
[root@web01 /server]# docker cp ubuntu:/tmp/test.txt ./
[root@web01 /server]# ls
test.txt
刪除映象
docker rmi <容器名>:<標籤>