编辑
2022-08-31
编程
00

目录

3. Docker 常用命令
3.1 镜像命令
docker images
docker search 搜索镜像
docker pull 下载镜像
docker rmi 删除镜像
3.2 容器命令
docker run 新建容器并启动
docker ps 查看运行容器
退出容器
docker rm 删除容器
docker start|restart|stop|kill 启动和停止容器
3.3 常用其他命令
后台启动
查看日志
查看容器中的进程信息
查看镜像的元数据
进入当前正在运行的容器
从容器内拷贝文件到主机上
3.4 总结
3.4. 基础实操
3.4.1 部署 Nginx
搜索镜像
拉取镜像
创建并启动容器
3.4.2 部署 tomcat
3.4.3 部署 es + kibana
运行 es
安装 kibana
4. Docker 可视化
4.1 portainer

3. Docker 常用命令

shell
docker version # 查看版本 docker info # 查看系统信息,包括镜像和容器信息 docker [命令] --help # 查看帮助

cmd_logic.png

文档:https://docs.docker.com/reference/

3.1 镜像命令

docker images

查看所有本地的主机上镜像

shell
[root@hecs-152658 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE bitnami/mongodb 5.0 2761eefb336c 11 days ago 577MB registry.rocket.chat/rocketchat/rocket.chat latest e58585248d3f 2 weeks ago 1.31GB hello-world latest 9c7a54a9a43c 2 months ago 13.3kB
  • 输出说明:
    • REPOSITORY:镜像的仓库源
    • TAG:镜像的标签
    • IMAGE ID : 镜像的id
    • CREATED: 镜像的创建时间
    • SIZE: 镜像的大小
  • 可选参数:
    • -a, --all 列出所有命令
    • -q, --quiet 只显示镜像id
shell
[root@hecs-152658 ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 14338 [OK] mariadb MariaDB Server is a high performing open sou… 5474 [OK] percona Percona Server is a fork of the MySQL relati… 618 [OK] ... # 过滤 STARS 大于3000以上的 [root@hecs-152658 ~]# docker search mysql --filter=STARS=3000 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 14338 [OK] mariadb MariaDB Server is a high performing open sou… 5474 [OK]

docker hub 搜索结果一致

docker_search.png

docker pull 下载镜像

shell
# docker pull 镜像名[:tag] [root@hecs-152658 ~]# docker pull mysql Using default tag: latest # 如果不写 tag, 默认就是 latest latest: Pulling from library/mysql 49bb46380f8c: Pull complete # 分层下载, docker image 的核心,联合文件系统 aab3066bbf8f: Pull complete d6eef8c26cf9: Pull complete 0e908b1dcba2: Pull complete 480c3912a2fd: Pull complete 264c20cd4449: Pull complete d7afa4443f21: Pull complete d32c26cb271e: Pull complete f1f84a2204cb: Pull complete 9a41fcc5b508: Pull complete 7b8402026abb: Pull complete Digest: sha256:51c4dc55d3abf4517a5a652794d1f0adb2f2ed1d1bedc847d6132d91cdb2ebbf # 签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest # 真实地址 # 由于分层下载技术,所以能共用了latest版本的部分文件,下载就会更快 [root@hecs-152658 ~]# docker pull mysql:8.0 8.0: Pulling from library/mysql Digest: sha256:51c4dc55d3abf4517a5a652794d1f0adb2f2ed1d1bedc847d6132d91cdb2ebbf Status: Downloaded newer image for mysql:8.0 docker.io/library/mysql:8.0 [root@hecs-152658 ~]# docker pull mysql:8.0.34 8.0.34: Pulling from library/mysql Digest: sha256:51c4dc55d3abf4517a5a652794d1f0adb2f2ed1d1bedc847d6132d91cdb2ebbf Status: Downloaded newer image for mysql:8.0.34 docker.io/library/mysql:8.0.34
  • 注意:
    • 如果不写 tag, 默认就是 latest

docker rmi 删除镜像

rm 删除, i 指image

shell
[root@hecs-152658 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 8.0 7c5ae0d3388c 3 days ago 577MB mysql 8.0.34 7c5ae0d3388c 3 days ago 577MB mysql latest 7c5ae0d3388c 3 days ago 577MB bitnami/mongodb 5.0 2761eefb336c 11 days ago 577MB registry.rocket.chat/rocketchat/rocket.chat latest e58585248d3f 2 weeks ago 1.31GB hello-world latest 9c7a54a9a43c 2 months ago 13.3kB # 删除所有 id 为 7c5ae0d3388c 的镜像 [root@hecs-152658 ~]# docker rmi -f 7c5ae0d3388c Untagged: mysql:8.0 Untagged: mysql:8.0.34 Untagged: mysql:latest Untagged: mysql@sha256:51c4dc55d3abf4517a5a652794d1f0adb2f2ed1d1bedc847d6132d91cdb2ebbf Deleted: sha256:7c5ae0d3388cc6f2c72e73c8b1b9a7ba29347d9d7117d426b5cd83c3b71fe2b9 Deleted: sha256:1835f63a5c50ac6bb1c76f3638c0dc1f12cb83e8785bbf0eaaf8b00394053537 Deleted: sha256:788096e6099967e0445ccdc4e3325c8b5d7bc9c01a4ce088809b8326cf89411b Deleted: sha256:878ac3c36da9ad2b13267633221bfe86c766d695c3262cd45a009cbbcb5eee80 Deleted: sha256:b43c1c5f46700a04d887f5cc287135201e998c78e1d409ac7ce0d99bdb10e40f Deleted: sha256:a08656a69d8bcec37e2edc478f21859d2a59d6344bad7016572bcb32ed9e1bf8 Deleted: sha256:7c324acd73d89feffe4d9870915c21aa9fc57159cd3a990a54cc1a10bc0b5282 Deleted: sha256:7b935957c6b8cb4cfecb1109ffceacbf3b100d48c2c842bffbe667ada0d7bf51 Deleted: sha256:798dc96d1cbbb087d228d7ee1542e81181d99c5feef7d646061fb1be60f0a600 Deleted: sha256:ac5998110c5937efa17d9ab7a09324d73ed1b8626c623d4f079d73d92bb573a6 Deleted: sha256:55cba8d2bd703353ff4e0958d6cf47d334cf2b7af665d18e7524d5e062d36a14 # 删除所有镜像 # docker rmi -f $(docker images -aq)
  • 删除指定镜像: docker rmi -f 镜像id
  • 删除多个镜像: docker rmi -f 镜像id 镜像id 镜像id 镜像id 镜像id
  • 删除全部镜像:docker rmi -f $(docker images -aq)

3.2 容器命令

有了镜像才可以创建容器

shell
# 下载个 centos [root@hecs-152658 ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest

docker run 新建容器并启动

docker run [可选参数] image

  • --name="Name" 容器名字
  • -d : 后台方式运行
  • -it : 使用交互方式运行,进入容器查看内容
  • -p: 指定容器端口
    • -p ip:主机端口:容器端口
    • -p 主机端口:容器端口
    • -p 容器端口
    • 容器端口
  • -P: 指定随机端口
shell
[root@hecs-152658 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 9c7a54a9a43c 2 months ago 13.3kB centos latest 5d0da3dc9764 22 months ago 231MB # -i -t 使用交互方式运行,进入容器查看内容 # /bin/bash 表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这个/bin/bash就表示启动容器后启动bash。 [root@hecs-152658 ~]# docker run -it centos /bin/bash # 这时交互已经变成容器的伪终端,这里命令是不全的 [root@1a8758ad50da /]# # 退出容器 [root@1a8758ad50da /]# exit exit [root@hecs-152658 ~]#

docker ps 查看运行容器

docker ps [可选参数]

  • 无参数时表示列出当前正在运行的容器

  • -a: 列出当前正在运行的容器 + 带出历史运行过的容器

  • -n=N : 显示最近创建的N个容器

  • -q : 只显示容器编号

shell
[root@hecs-152658 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@hecs-152658 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a8758ad50da centos "/bin/bash" 4 minutes ago Exited (0) About a minute ago blissful_noether [root@hecs-152658 ~]# docker ps -a -n=1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a8758ad50da centos "/bin/bash" 7 minutes ago Exited (0) 4 minutes ago blissful_noether

退出容器

exit

直接容器停止并退出

Ctrl + P + Q

容器不停止,退出交互界面

docker rm 删除容器

docker rm 容器id

删除指定容器, 不能删除正在运行的容器,如果要强制删除 rm -f

docker rm -rf $(docker ps -aq)

查出所有容器id,并删除

docker ps -a -q | xargs docker rm

通过管道删除容器

docker start|restart|stop|kill 启动和停止容器

docker start 容器id

启动容器

docker restart 容器id

重启容器

docker stop 容器id

停止当前正在运行的容器

docker kill 容器id

强制停止容器

3.3 常用其他命令

后台启动

docker run -d 镜像

  • 问题:docker ps 发现应用停止了(部分运用)
    • docker 容器使用后台运行,就必须要有一个前台进程,docker 发现没有应用,就会自动停止

查看日志

docker logs [可选参数] 容器ID

  • --tail number : 要显示的行数
shell
# 查看帮助 [root@hecs-152658 ~]# docker logs --help Usage: docker logs [OPTIONS] CONTAINER Fetch the logs of a container Aliases: docker container logs, docker logs Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. "2013-01-02T13:23:37Z") or relative (e.g. "42m" for 42 minutes) -n, --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. "2013-01-02T13:23:37Z") or relative (e.g. "42m" for 42 minutes) # 查看进程 [root@hecs-152658 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01cb87148743 registry.rocket.chat/rocketchat/rocket.chat:latest "docker-entrypoint.s…" 8 days ago Up 15 hours 0.0.0.0:3000->3000/tcp rocket-rocketchat-1 703d8f4150c8 bitnami/mongodb:5.0 "/opt/bitnami/script…" 8 days ago Up 15 hours 27017/tcp rocket-mongodb-1 # 查看日志 [root@hecs-152658 ~]# docker logs -t -n 8 01cb87148743 2021-07-28T10:58:23.473578431Z | Commit Branch: HEAD | 2021-07-28T10:58:23.473617345Z | | 2021-07-28T10:58:23.473638287Z +---------------------------------------------------+ 2021-07-28T10:58:23.549351717Z [2021-07-28T10:58:23.549Z] INFO 1ad24117-1c3b-40e9-8c26-4641f880597b/REGISTRY: '$node' service is registered. 2021-07-28T10:58:23.550837779Z [2021-07-28T10:58:23.550Z] INFO 1ad24117-1c3b-40e9-8c26-4641f880597b/REGISTRY: 'matrix' service is registered. 2021-07-28T10:58:23.551397528Z [2021-07-28T10:58:23.551Z] INFO 1ad24117-1c3b-40e9-8c26-4641f880597b/$NODE: Service '$node' started. 2021-07-28T10:58:23.551511434Z [2021-07-28T10:58:23.551Z] INFO 1ad24117-1c3b-40e9-8c26-4641f880597b/MATRIX: Service 'matrix' started. 2021-07-28T10:58:23.552034273Z [2021-07-28T10:58:23.551Z] INFO 1ad24117-1c3b-40e9-8c26-4641f880597b/BROKER: ✔ ServiceBroker with 2 service(s) started successfully in 637ms.

查看容器中的进程信息

docker top 容器id

shell
[root@hecs-152658 ~]# docker top 01cb87148743 UID PID PPID C STIME TTY TIME CMD 65533 98012 97984 0 Jul28 ? 00:03:25 node main.js

查看镜像的元数据

docker inspect 容器id

shell
[root@hecs-152658 ~]# docker inspect c631e702f191 [ { # 容器id "Id": "c631e702f191163ee2cacdb26ccfc28302d626b174d9905b76e7249872d669c8", "Created": "2023-07-29T02:07:29.58661783Z", "Path": "/bin/bash", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 101976, "ExitCode": 0, "Error": "", "StartedAt": "2023-07-29T02:07:29.834568308Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6", "ResolvConfPath": "/var/lib/docker/containers/c631e702f191163ee2cacdb26ccfc28302d626b174d9905b76e7249872d669c8/resolv.conf", "HostnamePath": "/var/lib/docker/containers/c631e702f191163ee2cacdb26ccfc28302d626b174d9905b76e7249872d669c8/hostname", "HostsPath": "/var/lib/docker/containers/c631e702f191163ee2cacdb26ccfc28302d626b174d9905b76e7249872d669c8/hosts", "LogPath": "/var/lib/docker/containers/c631e702f191163ee2cacdb26ccfc28302d626b174d9905b76e7249872d669c8/c631e702f191163ee2cacdb26ccfc28302d626b174d9905b76e7249872d669c8-json.log", "Name": "/intelligent_mclaren", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": null, "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "default", "PortBindings": {}, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "ConsoleSize": [ 24, 80 ], "CapAdd": null, "CapDrop": null, "CgroupnsMode": "host", "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": null, "GroupAdd": null, "IpcMode": "private", "Cgroup": "", "Links": null, "OomScoreAdj": 0, "PidMode": "", "Privileged": false, "PublishAllPorts": false, "ReadonlyRootfs": false, "SecurityOpt": null, "UTSMode": "", "UsernsMode": "", "ShmSize": 67108864, "Runtime": "runc", "Isolation": "", "CpuShares": 0, "Memory": 0, "NanoCpus": 0, "CgroupParent": "", "BlkioWeight": 0, "BlkioWeightDevice": [], "BlkioDeviceReadBps": [], "BlkioDeviceWriteBps": [], "BlkioDeviceReadIOps": [], "BlkioDeviceWriteIOps": [], "CpuPeriod": 0, "CpuQuota": 0, "CpuRealtimePeriod": 0, "CpuRealtimeRuntime": 0, "CpusetCpus": "", "CpusetMems": "", "Devices": [], "DeviceCgroupRules": null, "DeviceRequests": null, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "OomKillDisable": false, "PidsLimit": null, "Ulimits": null, "CpuCount": 0, "CpuPercent": 0, "IOMaximumIOps": 0, "IOMaximumBandwidth": 0, "MaskedPaths": [ "/proc/asound", "/proc/acpi", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware" ], "ReadonlyPaths": [ "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ] }, "GraphDriver": { "Data": { "LowerDir": "/var/lib/docker/overlay2/dd895562329a6d32aceabe9ae76d7b8741a31af1d61eeadd337febcabd64bea1-init/diff:/var/lib/docker/overlay2/617592754d7e4d8ae531aedc2e5dd8586f3d39bc31bd0312acd53df9fc042782/diff", "MergedDir": "/var/lib/docker/overlay2/dd895562329a6d32aceabe9ae76d7b8741a31af1d61eeadd337febcabd64bea1/merged", "UpperDir": "/var/lib/docker/overlay2/dd895562329a6d32aceabe9ae76d7b8741a31af1d61eeadd337febcabd64bea1/diff", "WorkDir": "/var/lib/docker/overlay2/dd895562329a6d32aceabe9ae76d7b8741a31af1d61eeadd337febcabd64bea1/work" }, "Name": "overlay2" }, "Mounts": [], "Config": { "Hostname": "c631e702f191", "Domainname": "", "User": "", "AttachStdin": true, "AttachStdout": true, "AttachStderr": true, "Tty": true, "OpenStdin": true, "StdinOnce": true, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "/bin/bash" ], "Image": "centos", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": { "org.label-schema.build-date": "20210915", "org.label-schema.license": "GPLv2", "org.label-schema.name": "CentOS Base Image", "org.label-schema.schema-version": "1.0", "org.label-schema.vendor": "CentOS" } }, "NetworkSettings": { "Bridge": "", "SandboxID": "d64991e9c8517523b8adb3caf4e8c46e0f8f0d98d118062cd30589eacb360b41", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": {}, "SandboxKey": "/var/run/docker/netns/d64991e9c851", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "83f8e1e5f8649aee902a91124269d0157508197e35d2f92ac00e749673bd3cfe", "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:02", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "7a85f96a7ea822d46d14c30a6110fe15ad9d69f9e3199a7e2fb50133fb6add25", "EndpointID": "83f8e1e5f8649aee902a91124269d0157508197e35d2f92ac00e749673bd3cfe", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02", "DriverOpts": null } } } } ]

进入当前正在运行的容器

docker exec -it 容器id /bin/bash

shell
[root@hecs-152658 ~]# docker exec -it c631e702f191 /bin/bash [root@c631e702f191 /]# read escape sequence [root@hecs-152658 ~]#

docker attach 容器id

shell
[root@hecs-152658 ~]# docker attach c631e702f191 [root@c631e702f191 /]# read escape sequence [root@hecs-152658 ~]#
  • 区别
    • docker exec 进入容器后开启一个新的终端,可以在里面操作(取决于启动运行的命令是啥,常用)
    • docker attach 进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 主机路径

  • 即使是容器停止运行,只要容器还在,就可以使用
  • 后面通过 -v 挂载的方式,可以打通存储
shell
[root@hecs-152658 ~]# docker cp c631e702f191:/root/test.txt . Successfully copied 2.56kB to /root/.

3.4 总结

cmd_logic.png

shell
attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders from the containers filesystem to the host path diff Inspect changes on a container's filesystem events Get real time events from the server export Stream the contents of a container as a tar archive history Show the history of an image images List images import Create a new filesystem image from the contents of a tarball info Display system-wide information inspect Return low-level information on a container kill Kill a running container load Load an image from a tar archive login Register or Login to the docker registry server logs Fetch the logs of a container port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT pause Pause all processes within a container ps List containers pull Pull an image or a repository from the docker registry server push Push an image or a repository to the docker registry server restart Restart a running container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save an image to a tar archive search Search for an image in the docker index start Start a stopped container stop Stop a running container tag Tag an image into a repository top Lookup the running processes of a container unpause Unpause a paused container version Show the docker version information wait Block until a container stops, then print its exit code

3.4. 基础实操

3.4.1 部署 Nginx

搜索镜像

最好在 docker hub 上搜索,可以看到详细信息

shell
[root@hecs-152658 ~]# docker search Nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 18807 [OK] unit Official build of NGINX Unit: Universal Web … 8 [OK] nginxinc/nginx-unprivileged Unprivileged NGINX D
拉取镜像
shell
[root@hecs-152658 ~]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx 45b42c59be33: Pull complete d0d9e9ea897e: Pull complete 66e650438339: Pull complete 76a3dfe4406b: Pull complete 410ff9d97480: Pull complete Digest: sha256:1a53eb723d17523512bd25c27299046cfa034cce309f4ed330c943a304513f59 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest
创建并启动容器
shell
# -d 后台运行 # --name 命名容器 # -p 8081:80 把容器的 80 端口映射成宿主机的 8081 [root@hecs-152658 ~]# docker run -d --name myNginx -p 8081:80 nginx 72bb0ac54b48d657063d1be39a21894cde8d1db42bfeb1f1c0dfee9e65178897 # 查看容器 [root@hecs-152658 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 72bb0ac54b48 nginx "/docker-entrypoint.…" 4 seconds ago Up 4 seconds 0.0.0.0:8081->80/tcp, :::8081->80/tcp myNginx

访问试试

这里需要注意的是宿主机的端口不一定是开放的,需要配置 安全组 这个需要在对应的云服务商控制台配置,比如华为云-> 控制台 -> 网络控制台 -> 访问控制 -> 安全组 -> 配置规则,这里还涉及到所用服务器使用了哪个安全组规则,可以看下对应云服务的文档。如果是本地虚拟机则不需要。

处理安全组,还有防火墙限制。这些属于 liunx 概念,就不赘述。

如果只是简单测试的话,可以直接在宿主机上 curl localhost:8081 不需要从浏览器访问

  • curl 访问
shell
[root@hecs-152658 ~]# curl localhost:8081 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
  • 浏览器访问

nginx_welcome.png

3.4.2 部署 tomcat

shell
[root@hecs-152658 ~]# docker search tomcat NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tomcat is an open source implementati… 3570 [OK] tomee Apache TomEE is an all-Apache Java EE certif… 109 [OK] ... [root@hecs-152658 ~]# docker pull tomcat Using default tag: latest latest: Pulling from library/tomcat 0ecb575e629c: Pull complete 7467d1831b69: Pull complete feab2c490a3c: Pull complete f15a0f46f8c3: Pull complete 26cb1dfcbebb: Pull complete 242c5446d23f: Pull complete f22708c7c9c1: Pull complete d8b7e17ca4bc: Pull complete 91588c31829d: Pull complete d97abf351b5d: Pull complete Digest: sha256:7f29cf0cb11a16bd3ff22c5716e655a7da872fb9b508b501588e30b2901ae446 Status: Downloaded newer image for tomcat:latest docker.io/library/tomcat:latest [root@hecs-152658 ~]# docker run -d --name myTomcat -p 8081:8080 tomcat 91c141f3caa1babf93ad1912dbebc6246ecec3e69430ec190d002798a404f568 [root@hecs-152658 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 91c141f3caa1 tomcat "catalina.sh run" 20 seconds ago Up 19 seconds 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp myTomcat # 这是访问是404,因为镜像是最小镜像,webapp下面没有东西 # 可以通过下列操作,复制webapp文件,再重新访问 [root@hecs-152658 ~]# docker exec -it myTomcat /bin/bash root@91c141f3caa1:/usr/local/tomcat# ls BUILDING.txt NOTICE RUNNING.txt lib temp work CONTRIBUTING.md README.md bin logs webapps LICENSE RELEASE-NOTES conf native-jni-lib webapps.dist root@91c141f3caa1:/usr/local/tomcat# cp -r webapps.dist/* webapps

docker run -it --rm 镜像名

这种一般是用来测试,通过交互控制台打开,关闭是删除容器(--rm)

3.4.3 部署 es + kibana

运行 es
shell
# 官方命令 $ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag # 启动后会发现非常卡,因为内存要求高 # 查看 docker 内存使用情况 [root@hecs-152658 ~]# docker stats # 增加内存限制,修改es配置文件, -e 配置修改 $ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m _Xmx512m" elasticsearch:tag # 测试 [root@hecs-152658 ~]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2 03e9e29352d6962913812d80e94b91e50461c36bdc8ff4e26a27891f87ecfc70 # 查看内存使用情况 [root@hecs-152658 ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 03e9e29352d6 elasticsearch 0.33% 368.7MiB / 3.649GiB 9.87% 2.51kB / 2.7kB 168kB / 729kB 45
安装 kibana

这里要思考一个问题,要怎么把kibana和es连接。。这就需要 docker 的网络原理。

4. Docker 可视化

4.1 portainer

Docker 图形化管理工具,提供一个后台面板拱我们操作。平时也不会使用,可以测试看看

shell
# 旧版使用命令 [root@hecs-152658 ~]# docker run -d -p 8081:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer Unable to find image 'portainer/portainer:latest' locally latest: Pulling from portainer/portainer 772227786281: Pull complete 96fd13befc87: Pull complete 0bad1d247b5b: Pull complete b5d1b01b1d39: Pull complete Digest: sha256:47b064434edf437badf7337e516e07f64477485c8ecc663ddabbe824b20c672d Status: Downloaded newer image for portainer/portainer:latest 9cfeecb61fc3608537a74d1b60f5a7e9e5478ad9f6246b1b55dbd8f12f72dd47

使用社区版:

shell
# 新版已经迁移到 portainer-ce 中了,如果使用旧的命令,会安装商业版,这里改成使用社区版 [root@hecs-152658 ~]# docker run -d -p 9200:8000 -p 9300:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest Unable to find image 'portainer/portainer-ce:latest' locally # 由于新版自带 https 保护,所以需要添加 -p 8080:9000 访问 [root@hecs-152658 ~]# docker run -d -p 9200:8000 -p 9300:9443 -p 8080:9000 --name portainer02 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest f6d44b79305ea4d10c79a8c6365a074e3943c51fd3482f565fde7df7575f489d

浏览器访问 ip:8081,创建账户,选择local环境进入面板

portainer_Dashboard.png

本文作者:Yui_HTT

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!