当前位置: 首页 > news >正文

开悟篇Docker从零到实战一篇文章搞定

目录

一:概述

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/
http://www.xdnf.cn/news/1436887.html

相关文章:

  • 基于Python毕业设计推荐:基于Django的全国降水分析可视化系统
  • 战略咨询——解读81页中小企业企业战略规划方案【附全文阅读】
  • go-mapus最简单的离线瓦片地图协作
  • C++后端开发重点知识点
  • Adafruit_nRF52_Bootloader 使用 uf2
  • Spring Cloud Config 核心原理
  • 【C++】编写通用模板代码的重要技巧:T()
  • CICD的持续集成与持续交付和Zabbix
  • 【C++】15. ⼆叉搜索树
  • 室内定位---apriltag 视觉定位demo
  • (四)Python控制结构(条件结构)
  • deepseek7b本地部署技巧,新手也能玩得转
  • 下载 | Win11 官方精简版,系统占用空间极少!(8月更新、Win 11 IoT物联网 LTSC版、适合老电脑安装使用)
  • Flink RuntimeContext和FunctionContext:状态计算的核心桥梁
  • Linux中断实验
  • 数字化转型的终极关怀:以人为本
  • Linux笔记14——shell编程基础-8
  • C#类对象映射AutoMapper
  • QT(2)
  • MTK Linux DRM分析(二十九)- MTK mtk_dsi.c(Part.1)
  • Linux 环境配置 muduo 网络库详细步骤
  • Linux 文本处理三大利器:命令小工具和sed
  • 从理念到实践:三层解耦架构与“无系统”论
  • 基于web的高校学籍管理系统的设计与实现-(源码+LW+可部署)
  • CodeBuddy 在进化:我只输入了一个地址,完成了OneCode3.0基础开发环境的配置构建
  • JWT在线解密/JWT在线解码 - 加菲工具
  • kukekey在线搭建k8sV1.30.4版本
  • 从栈中取出K个硬币的最大面值和-分组背包
  • 【学Python自动化】 8. Python 错误和异常学习笔记
  • 2025年工科生职业发展证书选择与分析