目錄
一:概述
1:why docker
2:Docker是什么?
3:Docker核心概念
二:初步體驗
1:Docker核心架構圖
2:準備工作
1:服務器
2:Docker安裝
3:阿里云docker安裝
4:鏡像加速
三:Docker命令和幫助文檔的使用
1:幫助文檔
2:鏡像的基本操作
1:查看本地下載的所有鏡像
2:搜索鏡像
3:下載鏡像
4:刪除鏡像
5:查看鏡像信息
6:組合使用刪除鏡像
3:容器基本操作
1:運行容器
1:直接運行
2:映射宿主機和容器端口
3:不以前臺shell終端的方式運行
4:啟動容器指定名稱
2:導入一個鏡像
3:查看容器信息
1:展示運行的docker容器
2:列出所有容器
3:列出所有退出狀態的容器
4:停止|關閉|重啟|立即關閉容器
5:刪除容器
6:查看容器運行日志
7:查看容器內的進程
8:通過宿主機與容器內部進行交互
9:退出容器
10:文件交互
11:查看容器內進程
12:查看容器內細節命令
13:數據卷指令
14:將容器打成一個新的鏡像
四:鏡像原理
五:運行MySQL容器
1:下載MySQL鏡像
2:啟動鏡像
3:進入MYSQL容器的Bash
4:創建表
5:驗證數據卷 完成了數據同步
6:docker運行MySQL的容器數據備份
六:運行Redis
七:運行ES
八:高級網絡
1:Docker容器之間通訊的必要性。
2:同一物理機上基于Docker引擎進行通訊的基本原理
3:總結
4:自定義網橋實現一組容器的通訊
1:創建自定義網橋
2:運行多個容器在指定網絡中
九:高級數據卷
1:數據卷是怎么回事
2:數據卷基本原理
1:查看docker維護的數據卷
2:查看數據卷詳細內容
3:刪除一個數據卷
4:直接創建一個數據卷
十:Dockerfile
1:Dockerfile
2:Dockerfile構建流程
3:Dockerfile指令
1:FROM
2:RUN
3:EXPOSE
4:WORKDIR
5:ADD
6:COPY
7:ENV
8:VOLUMN
9:CMD
10:ENTRYPOINT
十一:Dockerfile自定義項目鏡像
1:創建SpringBoot系項目
2:開發簡單功能,鏈接數據庫
3:測試項目代碼
4:打包項目代碼jar
5:編寫Dockerfile生成鏡像
6:運行Docker鏡像
7:運行一個MySQL容器
8:搭建共享網絡
9:最終結果展示
十二:Docker Compose
1:docker compose引入
2:簡介
3:如何使用
4:Docker Compose安裝
5:docker-compose第一個案例
1:創建一個空項目
2:在ems下創建一個模板文件
3:如何啟動docker-compose
6:docker-compose模板指令
1:build指令
2:覆蓋命令command
3:container_name
4:depends_on
5:environment
6:evn-file指定文件
7:healthcheck
8:image
9:networks
10:volumes
11:restart
7:docker-compose常用命令
1:up
2:down
3:docker exec
4:ps
5:restart
6:rm
7:top
8:unpause/pause
9:logs
十三:Docker可視化工具
1:簡介
2:安裝并啟用
3:安裝結果
一:概述
1:why docker
屏蔽環境差異。解決應用部署的不方便等。降低微服務部署時間。聚焦核心問題。
實際公司中打包基本上都不是直接用docker,而是使用k8s。不了解docker更不容易了解k8s。
2:Docker是什么?
VM虛擬機虛擬出來一套計算機,有虛擬的硬件設備和操作系統。Docker是一個應用容器引擎。一個容器可以理解為一個輕量級的虛擬機(只保留了操作系統必要的部分)
3:Docker核心概念
docker引擎就像是Java的虛擬機,必須有這個東西,才能運行docker。
鏡像 image
一個鏡像代表一個軟件。相當于一個容器的模板
可以類比:我們安裝盜版操作系統鏡像 鏡像可以創建容器。MySQL鏡像,Redis鏡像。MQ鏡像。
特點:只讀,不能修改
容器:一個輕量級的虛擬機。一個鏡像運行一次就是一個容器。
鏡像倉庫:存放鏡像的倉庫:官方的鏡像倉庫:https://hub.docker.com/
本地倉庫:用于存儲在使用docker過程中相關鏡像。都是從互聯網倉庫下載的。
二:初步體驗
gitlab是一個遠程代碼倉庫。公司一般有自己的私有的gitlab。
1:Docker核心架構圖
阿里云鏡像倉庫:直接把國外的遠程倉庫,同步了一份。
2:準備工作
1:服務器
首先需要準備一個linux環境,我們搞一個vm的虛擬機。或者購買云服務器。當前使用centos7并且要求4GB以上內存。
2:Docker安裝
官網的安裝步驟
卸載舊的docker
sudo dnf remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
安裝yum工具
sudo yum install -y yum-utils
設置倉庫連接
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安裝docker引擎
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
啟動docker引擎
將docker加入開機自啟動的服務
sudo systemctl enable --now docker啟動dockersudo systemctl start docker
驗證是否安裝成功
sudo docker run hello-world
docker容器引擎,管理容器的,容器是鏡像創建的。他會去鏡像倉庫拉去helloworld的鏡像。容器會打印helloworld。
停止docker
sudo systemctl stop docker
查看docker狀態
systemctl status docker
推薦將當前用戶加入docker組。
Linux當中有一個用戶組的概念。root用戶默認在root組,當前用戶最好屬于docker組,所以,我們先創建一個組,在將當前用戶加入docker組。
sudo groupadd docker
usermod -aG docker $User
docker run hello-world
3:阿里云docker安裝
阿里云提供了一個安裝腳本,可以適配多種環境的安裝。
通用方式安裝:根據Linux發行版本無關。
獲取該腳本:crul -fsSl get.docker.com -o get-docker.sh
執行腳本通過腳本下載,設置阿里云鏡像下載:sudo sh get-docker.sh --mirror Aliyun
4:鏡像加速
阿里為每一個開發者都提供了唯一的鏡像加速:
登錄阿里云--控制臺--檢索鏡像加速服務--阿里云提供的鏡像加速。
默認鏡像倉庫是在國外,我們需要配置鏡像加速。現在配置阿里云的鏡像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.xuanyuan.me"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
檢測配置是否成功
[cuillei@bogon ~]$ docker info
Client: Docker Engine - CommunityVersion: 28.3.3Context: defaultDebug Mode: falsePlugins:buildx: Docker Buildx (Docker Inc.)Version: v0.26.1Path: /usr/libexec/docker/cli-plugins/docker-buildxcompose: Docker Compose (Docker Inc.)Version: v2.39.1Path: /usr/libexec/docker/cli-plugins/docker-composeServer:Containers: 2Running: 0Paused: 0Stopped: 2Images: 3Server Version: 28.3.3Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueUsing metacopy: falseNative Overlay Diff: trueuserxattr: falseLogging Driver: json-fileCgroup Driver: systemdCgroup Version: 2Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local splunk syslogCDI spec directories:/etc/cdi/var/run/cdiSwarm: inactiveRuntimes: io.containerd.runc.v2 runcDefault Runtime: runcInit Binary: docker-initcontainerd version: 05044ec0a9a75232cad458027ca83437aae3f4darunc version: v1.2.5-0-g59923efinit version: de40ad0Security Options:seccompProfile: builtincgroupnsKernel Version: 5.14.0-601.el9.x86_64Operating System: CentOS Stream 9OSType: linuxArchitecture: x86_64CPUs: 4Total Memory: 7.47GiBName: bogonID: 24d29ae4-9fbf-4edb-ac49-7126990a6c08Docker Root Dir: /var/lib/dockerDebug Mode: falseExperimental: falseInsecure Registries:::1/128127.0.0.0/8Registry Mirrors:https://lzsuuf9m.mirror.aliyuncs.com/Live Restore Enabled: false
客戶端引擎提供命令,服務端引擎運行服務。
QQ也有自己的客戶端和服務端。
到這Docker已經安裝成功并且成功啟用了。
三:Docker命令和幫助文檔的使用
1:幫助文檔
docker --help 這個是大致的命令(大而全)
docker ps --help 查看ps命令的詳細用法
或者訪問官網地址查看文檔
https://docs.docker.com/engine.reference/commandline/images/
2:鏡像的基本操作
鏡像:image
docker version查看客戶端引擎和server端的版本的信息。
docker info 查看docker詳細信息。
docker --help 查看幫助信息
1:查看本地下載的所有鏡像
docker iamge ls
或者
docker images
2:搜索鏡像
直接訪問鏡像地址,通過頁面去看,一般都這么使用。
docker search mysql
3:下載鏡像
[非必寫]如果不寫就從官網下載,如果不寫標簽就拿最新的標簽。
dcoker pull [鏡像倉庫地址/] 鏡像名[:標簽]
docker pull 鏡像名 會自動拉去最新鏡像
docker pull 鏡像名:latest
舉例說明
[root@bogon ~]# docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/mysql_optimized:20240221-8.0.32-2.3.0
20240221-8.0.32-2.3.0: Pulling from alinux3/mysql_optimized
Digest: sha256:47244750f28e6caf9fc91df2a945d75fa4b6f2be669ece643928591e833640b7
Status: Image is up to date for alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/mysql_optimized:20240221-8.0.32-2.3.0
alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/mysql_optimized:20240221-8.0.32-2.3.0
4:刪除鏡像
docker image rm 鏡像名:tag
docker image rm 鏡像IDrm的必須得是沒有運行過的鏡像。docker image rm -f 鏡像名:tag
docker image rm -f 進項ID強制刪除,會把鏡像給刪除掉。
5:查看鏡像信息
查看所有下載的鏡像。
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/spark latest b774fd1e2551 17 months ago 617MB
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/spark 3 0896f5fbc416 17 months ago 617MB
alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/mysql_optimized 20240221-8.0.32-2.3.0 07cddd322c54 18 months ago 899MB
repository:倉庫地址
tag:標簽
image Id:鏡像唯一標
查看鏡像的id
[root@bogon ~]# docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]List imagesAliases:docker image ls, docker image list, docker imagesOptions:-a, --all Show all images (default hides intermediate images)--digests Show digests-f, --filter filter Filter output based on conditions provided--format string Format output using a custom template:'table': Print output in table format with column headers (default)'table TEMPLATE': Print output in table format using the given Go template'json': Print in JSON format'TEMPLATE': Print output using the given Go template.Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates--no-trunc Don't truncate output-q, --quiet Only show image IDs--tree List multi-platform images as a tree (EXPERIMENTAL)
[root@bogon ~]# docker images -q
b774fd1e2551
0896f5fbc416
07cddd322c54
[root@bogon ~]#
查看所有鏡像的鏡像id
[root@bogon ~]# docker images -a -q
b774fd1e2551
0896f5fbc416
07cddd322c54
[root@bogon ~]# docker images -aq
b774fd1e2551
0896f5fbc416
07cddd322c54
[root@bogon ~]#
列出所有鏡像名字為mysql的鏡像id
docker images --filter=reference='busy*:*libc'
docker images --filter=reference=mysql
6:組合使用刪除鏡像
[root@localhost /]# docker image rm -f $(docker image ls redis -q)
Untagged: redis:latest
Untagged: redis@sha256:b0efb06f6b4d8c1e2fd1b7c1e89e178d787b432b7b09286b4e7ea3dcdbac777a
Deleted: sha256:2f21f6e6fe03146ad470d4d98839e09d0fe91ed706320d970f9e749f5a3067bc
Deleted: sha256:75ef83067bb216d924be347737cdb1eb070e2260e98e8b5e3525eeb995b4c884
Deleted: sha256:180ef53c584c69b4dfb83b05d42c686c1ed86f108eb116f67ad8d7571a123f18
Deleted: sha256:b7610a1994c4493f5c5ac846b6d6a837467bcb733679c1e7214bcd30eee3752a
Deleted: sha256:f0603094ff40fa7b5317b275dd3e5504042976d5b603f10034370351729859c7
Deleted: sha256:fcd63cd28f76d69c90b16fc090ed4a9426593d83bba8952841d36a992f473a45
Deleted: sha256:15e9161d29cc235e8f8693ddeafc94d9b03ed88ca420e9e65b632c01bf2f8cef
[root@localhost /]#
3:容器基本操作
容器的相關操作。
1:運行容器
1:直接運行
docker run 鏡像名:tag
docker run 鏡像ID
docker run 倉庫地址/鏡像名:tag
[root@localhost /]# docker run --ulimit nofile=65536:65536 -m 4g tomcat:9.0-jre11
Unable to find image 'tomcat:9.0-jre11' locally
9.0-jre11: Pulling from library/tomcat
32f112e3802c: Pull complete
ebe18f308a67: Pull complete
37221a9ff962: Pull complete
717c0d286ea2: Pull complete
3284fba73e3e: Pull complete
be4d776a2aa1: Pull complete
4f4fb700ef54: Pull complete
c178adfbd8af: Pull complete
0a753fd26410: Pull complete
Digest: sha256:9fd04e8a3a44492a0637dae2f437e6cfe532dd162e9f26a05411cf03cc1990bf
Status: Downloaded newer image for tomcat:9.0-jre11
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Aug-2025 13:31:45.447 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.108
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Jul 31 2025 18:19:48 UTC
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.108.0
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 5.14.0-601.el9.x86_64
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /opt/java/openjdk
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 11.0.28+6
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Eclipse Adoptium
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
12-Aug-2025 13:31:45.459 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
12-Aug-2025 13:31:45.459 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
12-Aug-2025 13:31:45.459 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsun.io.useCanonCaches=false
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
12-Aug-2025 13:31:45.461 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
12-Aug-2025 13:31:45.461 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
12-Aug-2025 13:31:45.461 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
12-Aug-2025 13:31:45.461 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
12-Aug-2025 13:31:45.469 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.3.1] using APR version [1.7.2].
12-Aug-2025 13:31:45.469 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
12-Aug-2025 13:31:45.469 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
12-Aug-2025 13:31:45.472 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.13 30 Jan 2024]
12-Aug-2025 13:31:45.653 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
12-Aug-2025 13:31:45.669 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [366] milliseconds
12-Aug-2025 13:31:45.707 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
12-Aug-2025 13:31:45.707 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.108]
12-Aug-2025 13:31:45.718 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
12-Aug-2025 13:31:45.731 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [61] milliseconds
容器ID,基于那個image創建,容器內執行程序的命令,容器創建時間,當前狀態(up,dwon),容器內服務監聽的端口,容器的名字。
這樣運行一個容器沒有任何意義,因為容器與當前機器沒有進行交互。容器與容器之間也是隔離的。
我們想在希望8080可以直接訪問容器的8080接口,這個時候就需要映射宿主機端口和容器端口,這樣訪問宿主機端口的時候,就會直接將宿主機端口內容轉向容器端口。
docker run -p 8080:8080 tomcat:9.0jre11啟動 將系統的8080端口:專項 容器內服務監聽的8080端口再起一個窗口
docker run -p 8081:8080 tomcat:9.0jre11
2:映射宿主機和容器端口
[root@localhost ~]# docker run -p 8080:8080 tomcat:9.0-jre11
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Aug-2025 13:58:54.745 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.108
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Jul 31 2025 18:19:48 UTC
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.108.0
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 5.14.0-601.el9.x86_64
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /opt/java/openjdk
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 11.0.28+6
12-Aug-2025 13:58:54.748 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Eclipse Adoptium
12-Aug-2025 13:58:54.748 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
12-Aug-2025 13:58:54.748 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
12-Aug-2025 13:58:54.763 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
12-Aug-2025 13:58:54.763 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
12-Aug-2025 13:58:54.763 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
12-Aug-2025 13:58:54.763 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsun.io.useCanonCaches=false
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
12-Aug-2025 13:58:54.769 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.3.1] using APR version [1.7.2].
12-Aug-2025 13:58:54.769 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
12-Aug-2025 13:58:54.769 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
12-Aug-2025 13:58:54.773 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.13 30 Jan 2024]
12-Aug-2025 13:58:54.966 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
12-Aug-2025 13:58:54.983 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [402] milliseconds
12-Aug-2025 13:58:55.035 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
12-Aug-2025 13:58:55.036 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.108]
12-Aug-2025 13:58:55.048 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
12-Aug-2025 13:58:55.073 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [89] milliseconds
測試效果
3:不以前臺shell終端的方式運行
上邊的例子是以前段shell終端的例子運行,現在我們不這樣運行了。
[root@localhost /]# docker run -p 8080:8080 -d tomcat:9.0-jre11
644a2e27f2fad966e8659f7c0dcbd2c1d37ca573c7d5029571d429844baf0f36
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
644a2e27f2fa tomcat:9.0-jre11 "catalina.sh run" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp sleepy_lichterman## -d就表示后臺運行
## 返回一個容器ID
4:啟動容器指定名稱
docker run -p 8080:8080 -p 8081:8081 -d --name tomcat01 tomat:9.0-jre11## MQ往往有兩個端口,需要映射兩個外部端口。[root@localhost /]# docker run -p 8083:8080 -d --name tomcat01 tomcat:9.0-jre11
7508c78a5f6dbe46e06e70051eafd32f8d8e0a8c09239383039c437b42dff757
[root@localhost /]#
[root@localhost /]#
[root@localhost /]#
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7508c78a5f6d tomcat:9.0-jre11 "catalina.sh run" 23 seconds ago Up 22 seconds 0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp tomcat01
644a2e27f2fa tomcat:9.0-jre11 "catalina.sh run" 6 minutes ago Up 6 minutes 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp sleepy_lichterman
[root@localhost /]#
2:導入一個鏡像
docker load -i 鏡像名
3:查看容器信息
1:展示運行的docker容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb325c0e80f1 tomcat:9.0-jre11 "catalina.sh run" 3 minutes ago Up 3 minutes 0.0.0.0:8081->8080/tcp, [::]:8081->8080/tcp focused_shaw
b54865dcfaf9 tomcat:9.0-jre11 "catalina.sh run" 7 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp gracious_wiles
dd969070533f tomcat:9.0-jre11 "catalina.sh run" 39 minutes ago Up 39 minutes 8080/tcp hopeful_curran
[root@localhost ~]#
重點關注下ports 0.0.0.0表示任意Ip可以訪問(默認開啟所有遠程權限),第三個代表誰也訪問不了。
下圖:說明說明沒有容器在進行運行。
2:列出所有容器
無論是否在運行
docker ps -a
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7508c78a5f6d tomcat:9.0-jre11 "catalina.sh run" 23 seconds ago Up 22 seconds 0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp tomcat01
644a2e27f2fa tomcat:9.0-jre11 "catalina.sh run" 6 minutes ago Up 6 minutes 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp sleepy_lichterman
[root@localhost /]#
[root@localhost /]#
[root@localhost /]#
[root@localhost /]#
[root@localhost /]#
[root@localhost /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7508c78a5f6d tomcat:9.0-jre11 "catalina.sh run" 2 minutes ago Up 2 minutes 0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp tomcat01
644a2e27f2fa tomcat:9.0-jre11 "catalina.sh run" 8 minutes ago Up 8 minutes 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp sleepy_lichterman
cb325c0e80f1 tomcat:9.0-jre11 "catalina.sh run" 16 minutes ago Exited (129) 8 minutes ago focused_shaw
b54865dcfaf9 tomcat:9.0-jre11 "catalina.sh run" 19 minutes ago Exited (129) 8 minutes ago gracious_wiles
323bcddd3a0e tomcat:9.0-jre11 "catalina.sh run" 24 minutes ago Exited (130) 23 minutes ago nervous_rhodes
dd969070533f tomcat:9.0-jre11 "catalina.sh run" 51 minutes ago Exited (130) 8 minutes ago hopeful_curran
9e705b288eae tomcat:8.0-jre8 "catalina.sh run" 52 minutes ago Exited (139) 52 minutes ago wonderful_bohr
47779f64faf7 tomcat:8.0-jre8 "catalina.sh run" 53 minutes ago Exited (139) 53 minutes ago laughing_babbage
dcb79690494e tomcat:8.0-jre8 "catalina.sh run" 53 minutes ago Exited (139) 53 minutes ago dazzling_saha
36e122433fa8 tomcat:8.0-jre8 "catalina.sh run" 54 minutes ago Exited (139) 54 minutes ago intelligent_murdock
a22062e617ea tomcat:8.0-jre8 "catalina.sh run" 58 minutes ago Exited (139) 58 minutes ago suspicious_goldberg
9aac67eb0ee0 74cc54e27dc4 "/hello" 22 hours ago Exited (0) 22 hours ago wonderful_lamarr
[root@localhost /]#
3:列出所有退出狀態的容器
docker ps -f status=exited
列出所有退出狀態的容器的ID
docker ps -f status=exited -q
容器繼續運行的條件:docker當中容器繼續能運行的條件,docker必須得有一個前臺進行,如果沒有前臺進程。容器被認為空閑, 就會退出。
helloworld這個容器執行完畢之后,就完事了。這種的沒有前臺進程,后續就不在運行了。
4:停止|關閉|重啟|立即關閉容器
docker start 容器名稱|ID
docker stop 容器名稱|ID
docker restart 容器名稱|ID
docker kill 容器名稱|ID[root@localhost /]# docker start dd969070533f
dd969070533f
[root@localhost /]# docker restart dd969070533f
dd969070533f
[root@localhost /]# docker stop dd969070533f
dd969070533f
[root@localhost /]# docker start dd969070533f
dd969070533f
[root@localhost /]# docker kill dd969070533f
dd969070533f
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7508c78a5f6d tomcat:9.0-jre11 "catalina.sh run" 9 minutes ago Up 9 minutes 0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp tomcat01
644a2e27f2fa tomcat:9.0-jre11 "catalina.sh run" 14 minutes ago Up 14 minutes 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp sleepy_lichterman
[root@localhost /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7508c78a5f6d tomcat:9.0-jre11 "catalina.sh run" 9 minutes ago Up 9 minutes 0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp tomcat01
644a2e27f2fa tomcat:9.0-jre11 "catalina.sh run" 14 minutes ago Up 14 minutes 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp sleepy_lichterman
cb325c0e80f1 tomcat:9.0-jre11 "catalina.sh run" 23 minutes ago Exited (129) 15 minutes ago focused_shaw
b54865dcfaf9 tomcat:9.0-jre11 "catalina.sh run" 26 minutes ago Exited (129) 15 minutes ago gracious_wiles
323bcddd3a0e tomcat:9.0-jre11 "catalina.sh run" 31 minutes ago Exited (130) 29 minutes ago nervous_rhodes
dd969070533f tomcat:9.0-jre11 "catalina.sh run" 58 minutes ago Exited (137) 15 seconds ago hopeful_curran
9e705b288eae tomcat:8.0-jre8 "catalina.sh run" 59 minutes ago Exited (139) 59 minutes ago wonderful_bohr
47779f64faf7 tomcat:8.0-jre8 "catalina.sh run" About an hour ago Exited (139) About an hour ago laughing_babbage
dcb79690494e tomcat:8.0-jre8 "catalina.sh run" About an hour ago Exited (139) About an hour ago dazzling_saha
36e122433fa8 tomcat:8.0-jre8 "catalina.sh run" About an hour ago Exited (139) About an hour ago intelligent_murdock
a22062e617ea tomcat:8.0-jre8 "catalina.sh run" About an hour ago Exited (139) About an hour ago suspicious_goldberg
9aac67eb0ee0 74cc54e27dc4 "/hello" 22 hours ago Exited (0) 22 hours ago wonderful_lamarr
[root@localhost /]#
5:刪除容器
docker rm 容器名稱|容器ID[root@localhost /]# docker rm 9aac
9aac
[root@localhost /]# docker rm -f $(docker ps -a -q)
7508c78a5f6d
644a2e27f2fa
cb325c0e80f1
b54865dcfaf9
323bcddd3a0e
dd969070533f
9e705b288eae
47779f64faf7
dcb79690494e
36e122433fa8
a22062e617ea
[root@localhost /]#
6:查看容器運行日志
docker logs 容器ID:容器名稱
docker logs -f 容器ID:容器名稱 事實查看日志。
docker logs -f -t 容器id:容器名稱 實時且有時間戳。
docker logs --tail 5 查看文件尾部最后5行。
7:查看容器內的進程
docker top 容器ID|容器名稱[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
87c68ee3529b tomcat:9.0-jre11 "catalina.sh run" 6 minutes ago Up 6 minutes 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp tomcat01
[root@localhost /]# docker top 87c
UID PID PPID C STIME TTY TIME CMD
root 7658 7636 0 10:56 ? 00:00:02 /opt/java/openjdk/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 -Dsun.io.useCanonCaches=false -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
[root@localhost /]# PID容器內部的進程的ID。
8:通過宿主機與容器內部進行交互
進入容器
docker exec -it 容器ID|容器名稱 bash-it:進入容器的交互模型
exec:進入
bash:容器內部交互頁面[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
87c68ee3529b tomcat:9.0-jre11 "catalina.sh run" 6 minutes ago Up 6 minutes 0.0.0.0:8080->8080/