From 25152e2e210ed002937ce01f9ceee8af863d2794 Mon Sep 17 00:00:00 2001 From: LeJingS <3489749586@qq.com> Date: Sun, 19 Jan 2025 19:02:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20d01.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Docker/d01.md | 589 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 585 insertions(+), 4 deletions(-) diff --git a/Docker/d01.md b/Docker/d01.md index 56de74e..656c9d4 100644 --- a/Docker/d01.md +++ b/Docker/d01.md @@ -1,6 +1,6 @@ ### docker常用命令 -``` +```shell docker version 版本信息 docker info 详细信息 docker 命令 -help 帮助命令 @@ -14,9 +14,9 @@ docker 命令 -help 帮助命令 #### 镜像命令 -docker images 查看本地镜像 +##### docker images 查看本地镜像 -``` +```shell lejings@ljs-Ubuntu-desktop:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE portainer/portainer-ce latest 0c03664af9ed 4 weeks ago 308MB @@ -30,9 +30,590 @@ hello-world latest d2c94e258dcb 20 months ago 13.3kB -docker search 搜索网络镜像 +##### docker search 搜索网络镜像 + +```shell +国内墙了、 +通过ziti访问 +``` + +[docker网页搜索地址](https://hub.docker.com/search?q=mysql) + + + +##### docker pull 下载镜像 + +```shell +lejings@ljs-Ubuntu-desktop:~$ docker pull mysql +Using default tag: latest +可选: +加上 :tag 版本 +----------------------------------------------- +lejings@ljs-Ubuntu-desktop:~$ docker pull mysql +Using default tag: latest#不写版本,默认最新版 +latest: Pulling from library/mysql +2c0a233485c3: Pull complete #分层下载,docker iamge的核心 联合文件系统 +cb5a6a8519b2: Pull complete +570d30cf82c5: Pull complete +a841bff36f3c: Pull complete +80ba30c57782: Pull complete +5e49e1f26961: Pull complete +ced670fc7f1c: Pull complete +0b9dc7ad7f03: Pull complete +cd0d5df9937b: Pull complete +1f87d67b89c6: Pull complete +Digest: sha256:0255b469f0135a0236d672d60e3154ae2f4538b146744966d96440318cc822c6#签名 +Status: Downloaded newer image for mysql:latest +docker.io/library/mysql:latest#真实地址 + +#制定版本下载 +lejings@ljs-Ubuntu-desktop:~$ docker pull mysql:5.7 +5.7: Pulling from library/mysql +20e4dcae4c69: Pull complete +1c56c3d4ce74: Pull complete +e9f03a1c24ce: Pull complete +68c3898c2015: Pull complete +6b95a940e7b6: Pull complete +90986bb8de6e: Pull complete +ae71319cb779: Pull complete +ffc89e9dfd88: Pull complete +43d05e938198: Pull complete +064b2d298fba: Pull complete +df9a4d85569b: Pull complete +Digest: sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bb +Status: Downloaded newer image for mysql:5.7 +docker.io/library/mysql:5.7 +#分层下载中相同层可以复用 +``` + +##### docker rmi 删除镜像 + +```shell + +lejings@ljs-Ubuntu-desktop:~$ docker rmi -f mysql:5.7 +Untagged: mysql:5.7 +Untagged: mysql@sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bb +Deleted: sha256:5107333e08a87b836d48ff7528b1e84b9c86781cc9f1748bbc1b8c42a870d933 +Deleted: sha256:37fd5f1492d4e9cb540c52c26655f220568050438f804275e886200c8807ffb4 +Deleted: sha256:1105a50d3483cb9f970e70cf5163e3352f0b2fe2ff07c6abcca6f34228e76dc5 +Deleted: sha256:94187496c18bb11b78e71017f2774ad3c0a734da9749a46e917c4239504e9322 +Deleted: sha256:ae59716eae3be604a4fd43e86fd2ad504cb06c89cc064c73c78eee651e675805 +Deleted: sha256:97d26ca29ec287ff4bd09a49602c44cbcabcf3303ddc726b3b94cbe26dfe1c94 +Deleted: sha256:27303974d12144264b32b8936ca7c90d72bdba939a9e791010201b3b1717c4c4 +Deleted: sha256:4d4483f06dbe01282c10cb9e429a0be826c18c61048f7860dad49ae7f6bac927 +Deleted: sha256:3b73a6f6b3298c568dcfb8fa5e96c581a1b5c0ad395b0c38f9addd0c79703124 +Deleted: sha256:46446bf265a411a4a13a4adc86f60c9e0479a2e03273c98cafab7bc4151dd2bc +Deleted: sha256:1d5264146b09a27a8fc6801dc239a4962582ed27dd2fbd8ee708463a1857b06b +Deleted: sha256:cff044e186247f93aa52554c96d77143cc92f99b2b55914038d0941fddeb6623 + +# docker rmi -f 多个容器id +# docker rmi -f $(docker images -a) 删除全部 +``` + + + + + +#### 容器命令 + +有镜像才能有容器 + +例如: + +下载一个centos镜像来测试 + +```shell +lejings@ljs-Ubuntu-desktop:~$ 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 +``` + +##### 新建容器并启动 + +```shell +docker run [可选参数] image +#参数说明 +--name="Name" 容器名字 同来区分容器 +-d 后台方式运行 +-it 使用交互方式运行,进入容器查看内容 +-p 指定容器的端口 + -p ip:主机端口:容器端口 + -p 主机端口:容器端口 + -p 容器端口 + 容器端口 +-P 随机指定端口 +``` + +##### 启动并进入容器测试 + +```shell +lejings@ljs-Ubuntu-desktop:~$ docker run -it centos /bin/bash +[root@297d9cb6d962 /]# ls +bin etc lib lost+found mnt proc run srv tmp var +dev home lib64 media opt root sbin sys usr +#退出命令 +[root@297d9cb6d962 /]# exit +exit +lejings@ljs-Ubuntu-desktop:~$ ls + 公共的 视频 文档 音乐 backups01 NginxLearn snap + 模板 图片 下载 桌面 log q 'Sunlogin Files' +lejings@ljs-Ubuntu-desktop:~$ +``` + +##### 列出在运行的容器命令 + +```shell +-a 会带出历史运行过的所有容器 +-n=? 显示多少个容器 +-q 只显示容器的编号 + +lejings@ljs-Ubuntu-desktop:~$ docker ps -a +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +297d9cb6d962 centos "/bin/bash" 2 minutes ago Exited (0) 57 seconds ago sharp_ardinghelli +e5f7036a4b66 portainer/portainer-ce:latest "/portainer" 19 hours ago Up 3 hours 8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp blissful_payne +lejings@ljs-Ubuntu-desktop:~$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +e5f7036a4b66 portainer/portainer-ce:latest "/portainer" 19 hours ago Up 3 hours 8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp blissful_payne + +``` + +##### 退出容器 + +```shell +exit #停止并退出 +ctrl+P+Q #不停止退出 +``` + +##### 删除容器 + +```shell +docker rm 容器id +docker rm -f $(docker ps -aq) 删除所有容器 +docker ps -a -q |xargs docker rm 删除所有容器 +``` + +##### 启动和停止容器操作 + +```shell +docker start id 启动 +docker restart id 重启 +docker stop id 停止 +docker kill id 杀死 +``` + + + +#### 常用的其他命令 + +##### 后台启动容器 + +```shell +# 命令 docker run -d centos +lejings@ljs-Ubuntu-desktop:~$ docker run -d centos +f682fa6dcf219cb0a922b9f143cfe247540d5db38c529b0d14a00daa5f9225da +lejings@ljs-Ubuntu-desktop:~$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +e5f7036a4b66 portainer/portainer-ce:latest "/portainer" 20 hours ago Up 3 hours 8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp blissful_payne + +# 问题docker ps,发现centos停止了 + +#坑 docker容器后台运行,就必须要有一个前台进程,docker没有发现应用,就会自动停止eg无服务的nginx +``` + + + +查看日志 + +```shell +docker logs +-f +-t +一般都加上 +docker logs -f -t --tail +eg +lejings@ljs-Ubuntu-desktop:~$ docker run -d centos /bin/sh -c "while true;do echo lejings;sleep 1;done" +27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56 +lejings@ljs-Ubuntu-desktop:~$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +27077792d720 centos "/bin/sh -c 'while t…" 3 seconds ago Up 2 seconds nervous_aryabhata +e5f7036a4b66 portainer/portainer-ce:latest "/portainer" 20 hours ago Up 4 hours 8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp blissful_payne +lejings@ljs-Ubuntu-desktop:~$ +lejings@ljs-Ubuntu-desktop:~$ docker logs -tf --tail 10 27077792d720 +2025-01-19T04:01:51.026673577Z lejings +2025-01-19T04:01:52.029524593Z lejings +2025-01-19T04:01:53.032214090Z lejings +2025-01-19T04:01:54.036061600Z lejings +2025-01-19T04:01:55.041148641Z lejings +2025-01-19T04:01:56.045207647Z lejings +2025-01-19T04:01:57.046315804Z lejings +2025-01-19T04:01:58.049623446Z lejings + +``` + +##### 查看容器中进程信息 + +```shell +# top命令 +lejings@ljs-Ubuntu-desktop:~$ docker top 27077792d720 +UID PID PPID C STIME TTY TIME CMD +root 64479 64454 0 11:59 ? 00:00:00 /bin/sh -c while true;do echo lejings;sleep 1;done + +``` + +##### 查看镜像的元数据 + +``` shell +lejings@ljs-Ubuntu-desktop:~$ docker inspect 27077792d720 +[ + { + "Id": "27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56", + "Created": "2025-01-19T03:59:39.128785938Z", + "Path": "/bin/sh", + "Args": [ + "-c", + "while true;do echo lejings;sleep 1;done" + ], + "State": { + "Status": "running", + "Running": true, + "Paused": false, + "Restarting": false, + "OOMKilled": false, + "Dead": false, + "Pid": 64479, + "ExitCode": 0, + "Error": "", + "StartedAt": "2025-01-19T03:59:39.335663808Z", + "FinishedAt": "0001-01-01T00:00:00Z" + }, + "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6", + "ResolvConfPath": "/var/lib/docker/containers/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56/resolv.conf", + "HostnamePath": "/var/lib/docker/containers/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56/hostname", + "HostsPath": "/var/lib/docker/containers/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56/hosts", + "LogPath": "/var/lib/docker/containers/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56-json.log", + "Name": "/nervous_aryabhata", + "RestartCount": 0, + "Driver": "overlay2", + "Platform": "linux", + "MountLabel": "", + "ProcessLabel": "", + "AppArmorProfile": "docker-default", + "ExecIDs": null, + "HostConfig": { + "Binds": null, + "ContainerIDFile": "", + "LogConfig": { + "Type": "json-file", + "Config": {} + }, + "NetworkMode": "bridge", + "PortBindings": {}, + "RestartPolicy": { + "Name": "no", + "MaximumRetryCount": 0 + }, + "AutoRemove": false, + "VolumeDriver": "", + "VolumesFrom": null, + "ConsoleSize": [ + 26, + 112 + ], + "CapAdd": null, + "CapDrop": null, + "CgroupnsMode": "private", + "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": null, + "PidsLimit": null, + "Ulimits": [], + "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", + "/sys/devices/virtual/powercap" + ], + "ReadonlyPaths": [ + "/proc/bus", + "/proc/fs", + "/proc/irq", + "/proc/sys", + "/proc/sysrq-trigger" + ] + }, + "GraphDriver": { + "Data": { + "LowerDir": "/var/lib/docker/overlay2/79781adb2df7cf08a30bee6c6fd4e0704a77b287c0e4ff740343211c35cce599-init/diff:/var/lib/docker/overlay2/5bd411d3ed71ae95f4d20704f6bb04057dae389c5371211a5fbee9a0940988c5/diff", + "MergedDir": "/var/lib/docker/overlay2/79781adb2df7cf08a30bee6c6fd4e0704a77b287c0e4ff740343211c35cce599/merged", + "UpperDir": "/var/lib/docker/overlay2/79781adb2df7cf08a30bee6c6fd4e0704a77b287c0e4ff740343211c35cce599/diff", + "WorkDir": "/var/lib/docker/overlay2/79781adb2df7cf08a30bee6c6fd4e0704a77b287c0e4ff740343211c35cce599/work" + }, + "Name": "overlay2" + }, + "Mounts": [], + "Config": { + "Hostname": "27077792d720", + "Domainname": "", + "User": "", + "AttachStdin": false, + "AttachStdout": false, + "AttachStderr": false, + "Tty": false, + "OpenStdin": false, + "StdinOnce": false, + "Env": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + ], + "Cmd": [ + "/bin/sh", + "-c", + "while true;do echo lejings;sleep 1;done" + ], + "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": "deb35f60f666b7f7e5cfcaf686690836a08707fbd5107126b01c48085735c6b3", + "SandboxKey": "/var/run/docker/netns/deb35f60f666", + "Ports": {}, + "HairpinMode": false, + "LinkLocalIPv6Address": "", + "LinkLocalIPv6PrefixLen": 0, + "SecondaryIPAddresses": null, + "SecondaryIPv6Addresses": null, + "EndpointID": "aa07ba6a7322858d0ba87c80a67bdeb2f12a78f1575ffe7adb0bd6935c49d657", + "Gateway": "172.17.0.1", + "GlobalIPv6Address": "", + "GlobalIPv6PrefixLen": 0, + "IPAddress": "172.17.0.3", + "IPPrefixLen": 16, + "IPv6Gateway": "", + "MacAddress": "02:42:ac:11:00:03", + "Networks": { + "bridge": { + "IPAMConfig": null, + "Links": null, + "Aliases": null, + "MacAddress": "02:42:ac:11:00:03", + "DriverOpts": null, + "NetworkID": "903e049ace8d2e93714e09d69fec26d5a3d116ce540ca80e5f154a8ccb8eead3", + "EndpointID": "aa07ba6a7322858d0ba87c80a67bdeb2f12a78f1575ffe7adb0bd6935c49d657", + "Gateway": "172.17.0.1", + "IPAddress": "172.17.0.3", + "IPPrefixLen": 16, + "IPv6Gateway": "", + "GlobalIPv6Address": "", + "GlobalIPv6PrefixLen": 0, + "DNSNames": null + } + } + } + } +] + +``` + + + +##### 进入当前正在运行的容器 + +```shell + # 进入容器后打开一个新的终端 + docker exec -it 容器id bashShell + eg + +lejings@ljs-Ubuntu-desktop:~$ docker exec -it 27077792d720 /bin/bash +[root@27077792d720 /]# ls +bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var +[root@27077792d720 /]# ps -ef +UID PID PPID C STIME TTY TIME CMD +root 1 0 0 03:59 ? 00:00:01 /bin/sh -c while true;do echo lejings;sleep 1;done +root 3368 0 0 04:55 pts/0 00:00:00 /bin/bash +root 3394 1 0 04:56 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/s +root 3395 3368 0 04:56 pts/0 00:00:00 ps -ef +[root@27077792d720 /]# + +# +docker attach id +#进入正在执行的终端 +lejings@ljs-Ubuntu-desktop:~$ docker attach 27077792d720 +lejings +lejings +lejings +lejings +lejings +lejings + + +``` + + + +##### 由容器拷贝到主机 + +```shell +[root@43c604c94793 home]# ls +[root@43c604c94793 home]# touch test.java +[root@43c604c94793 home]# ls +test.java +[root@43c604c94793 home]# exit +exit +lejings@ljs-Ubuntu-desktop:~/桌面$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +lejings@ljs-Ubuntu-desktop:~/桌面$ docker ps -a +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +43c604c94793 centos "/bin/bash" 3 minutes ago Exited (0) 6 seconds ago vigilant_dirac +lejings@ljs-Ubuntu-desktop:~/桌面$ sudo docker cp 43c604c94793:/home/test.java /home +[sudo] lejings 的密码: +Successfully copied 1.54kB to /home +lejings@ljs-Ubuntu-desktop:~/桌面$ cd /home +lejings@ljs-Ubuntu-desktop:/home$ ls +lejings szh test.java + +``` + + + +#### 练习 + +> Docker 安装 Nginx + + + +```shell +lejings@ljs-Ubuntu-desktop:/home$ docker images +REPOSITORY TAG IMAGE ID CREATED SIZE +portainer/portainer-ce latest 0c03664af9ed 4 weeks ago 308MB +nginx latest 9bea9f2796e2 7 weeks ago 192MB +mysql latest 56a8c14e1404 3 months ago 603MB +hello-world latest d2c94e258dcb 20 months ago 13.3kB +centos latest 5d0da3dc9764 3 years ago 231MB +lejings@ljs-Ubuntu-desktop:/home$ docker run -d --name nginx01 -p 3344:80 nginx +c6376749820f8a9e7b2e45bdf392f718629eb6114f201f8e58962d4073d9e9b6 +lejings@ljs-Ubuntu-desktop:/home$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +c6376749820f nginx "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 0.0.0.0:3344->80/tcp, [::]:3344->80/tcp nginx01 ``` +每次更改nginx等相关文件,都要进入容器,于是提出在容器外部提供一个映射路径,达到自动修改 + + + +> Docker 安装 Tomcat + + + +官方使用说明 + +```shell +docker run -it --rm tomcat:9.0 +即用在测试场景中,用完即删 +#先下载再启动方式 + +测试访问响应404,证明镜像中tomcat不完整 +root@ca1ad6b59e59:/usr/local/tomcat# ls +bin CONTRIBUTING.md LICENSE NOTICE RUNNING.txt webapps +BUILDING.txt filtered-KEYS logs README.md temp webapps.dist +conf lib native-jni-lib RELEASE-NOTES upstream-KEYS work +root@ca1ad6b59e59:/usr/local/tomcat# cd webapps +root@ca1ad6b59e59:/usr/local/tomcat/webapps# ls +root@ca1ad6b59e59:/usr/local/tomcat/webapps# +拷贝初始文件 +root@ca1ad6b59e59:/usr/local/tomcat# cp -r webapps.dist/* webapps +root@ca1ad6b59e59:/usr/local/tomcat# cd webapps +root@ca1ad6b59e59:/usr/local/tomcat/webapps# ls +docs examples host-manager manager ROOT +root@ca1ad6b59e59:/usr/local/tomcat/webapps# + ``` +每次更改tomcat等相关文件,都要进入容器,于是提出在容器外部提供一个映射路径,达到自动修改 + + + +> 部署es+kibana + + + +// to do 暂略 + + + + + + + + + + + + + + +