前言: 這是《VMware 虛擬機圖文安裝和配置 Rocky Linux 8.5 教程》一文的姐妹篇教程,如果你需要閱讀它,請點擊這裡。 2020 年,CentOS 宣佈:計劃未來將重心從 CentOS Linux 轉移到 CentOS Stream。CentOS 8 的生命周期已於 2021 年 ...
服務相關命令
#查看docker狀態
systemctl status docker
#啟動docker
systemctl start docker
#重啟
systemctl restart docker
#設置開機自啟動
systemctl enable docker
鏡像相關命令
#查看鏡像 - 本地的
docker images
#搜索鏡像 - 搜索遠程的
docker search redis
#拉取鏡像 - 從遠程下載 docker pull redis:tag tag指定版本號
docker pull redis
#刪除鏡像 - 刪除本地的 docker rmi ImageID ImageID指定鏡像ID
docker rmi d0f3d9fe7db7
#刪除所有鏡像
docker rmi `docker images -q`
註意:刪除鏡像,正在運行的鏡像,無法刪除
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 8.5 1b9b129f7bca 6 hours ago 679MB
mysql 5.6 dd3b2a5dcb48 4 months ago 303MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
#解釋
REPOSITORY 鏡像的倉庫源
TAG 鏡像的標簽
IMAGE ID 鏡像的Id
CREATED 鏡像的創建時間
SIZE 鏡像的文件大小
#可選項
-a --all #列出所有鏡像
-q --quiet #只顯示鏡像的ID
docker search搜索
[root@localhost ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12554 [OK]
mariadb MariaDB Server is a high performing open sou… 4825 [OK]
#可選項
-- filter=STARS=3000 #搜索出來的鏡像就是STARS大於3000的
[root@localhost ~]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12554 [OK]
mariadb MariaDB Server is a high performing open sou… 4825 [OK]
說明:我們有了鏡像才可以創建容器,linux,下載一個centos鏡像來測試學士
docker pull centos
新建容器並啟動
docker run[可選參數] image
#參數說明
--name="Name" 容器的名字 tomcat01 tomcat02,用來區分容器
-d 後臺方式運行
-it 使用交互方式運行,進入容器查看內容
-p 指定容器的埠 -p 8080:8080
-p ip:主機埠:容器埠
-p 主機埠:容器埠(常用)
-p 容器埠
容器埠
-p 隨機指定埠
#測試啟動併進入容器
[root@localhost ~]# docker run -it tomcat /bin/bash
root@fb65bdba861f:/usr/local/tomcat# ls 查詢容器內的tomcat
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
root@fb65bdba861f:/usr/local/tomcat#
列出所有的運行容器
#docker ps 命令
#列出當前正在運行的容器
-a #列出當前正在運行的容器+帶出歷史運行過的容器
-n #最佳創建的容器
-q #只顯示容器的編碼
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb65bdba861f tomcat "/bin/bash" 2 minutes ago Exited (0) 43 seconds ago zen_montalcini
c5c85bca5639 tomcat "catalina.sh run" 13 minutes ago Exited (143) 12 minutes ago tomcat8.5
5616fdb3fddf tomcat:8.5 "catalina.sh run" 3 hours ago Exited (255) 34 minutes ago 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat
1b800b242e98 hello-world "/hello"
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
退出容器
exit #直接容器退出+停止
Ctrl+P+Q #容器不停止退出
刪除容器
docker rm 容器id #刪除指定容器,不能刪除正在運行的容器,如果要強制刪除 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 kill 容器id #強制停止當前容器
常用其他命令
查看日誌
docker logs -fft --tail 10 容器 沒有日誌
#自己編寫一段shell腳本
[root@kuangshen /]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1; done"
# [root@kuangshen /]# docker ps
CONTAINER ID IMAGE
dce7b86171bf centos
#顯示日誌
-tf
#顯示日誌
--tail number#要顯示日誌條數
[root@kuangshen /]# docker logs -tf --tail 10 dce7b86171bf
查看容器中進程信息
#命令 docker top 容器id
[root@localhost ~]# docker top 5ab76fc61511
UID PID PPID C STIME TTY TIME CMD
root 8602 8582 7 15:58 ? 00:00:01 /usr/local/openjdk-11/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
查看鏡像元數據
#命令 docker inspect 容器id
[root@localhost ~]# docker inspect 5ab76fc61511
[
{
"Id": "5ab76fc615110ffb5dfe188ff9258998e8f21eb117192349c32c94050e579095",
"Created": "2022-05-12T07:58:46.314489117Z",
"Path": "catalina.sh",
"Args": [
"run"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 8602,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-05-12T07:58:46.76464332Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},...........
進入當前正在運行的容器
#我們通常容器都是使用後臺方式運行的,需要進入容器,修改一些配置
#命令
docker exec -it 容器id /bin/bash
#測試
[root@localhost ~]# docker exec -it 5ab76fc61511 /bin/bash
root@5ab76fc61511:/usr/local/tomcat# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
root@5ab76fc61511:/usr/local/tomcat# ps -if
error: unsupported SysV option
Usage:
ps [options]
Try 'ps --help <simple|list|output|threads|misc|all>'
or 'ps --help <s|l|o|t|m|a>'
for additional help text.
For more details see ps(1).
#方式二
docker attach 容器id
#測試
[root@localhost ~]# docker attach 5ab76fc61511
正在執行當前代碼。。。。
#docker exec #進入容器後開啟一個新的終端 可以在裡面操作(常用)
#docker attach #進入容器正在執行的終端,不會啟動新的進程
從容器內容拷貝文件到主機上
#進入容器內部
[root@localhost ~]# docker exec -it 35a549f10a4b /bin/bash
root@35a549f10a4b:/usr/local/tomcat# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
root@35a549f10a4b:/usr/local/tomcat# cd /home
root@35a549f10a4b:/home# ls
#新建一個antler.java文件
root@35a549f10a4b:/home# touch antler.java
root@35a549f10a4b:/home# ls
antler.java
#退出
root@35a549f10a4b:/home# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35a549f10a4b tomcat:8.5 "catalina.sh run" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat
#命令
docker cp 容器id:/文件絕對路徑 要賦值的位置
#將容器內文件拷貝到主機
[root@localhost ~]# docker cp 35a549f10a4b:/home/antler.java /home
[root@localhost ~]# ls /home
antler.java damo java mysql tomcat xiaodengfeng