You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

620 lines
20 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### docker常用命令
```shell
docker version 版本信息
docker info 详细信息
docker 命令 -help 帮助命令
```
#### docker帮助文档
链接:
[docker | Docker Docs](https://docs.docker.com/reference/cli/docker/)
#### 镜像命令
##### docker images 查看本地镜像
```shell
lejings@ljs-Ubuntu-desktop:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
portainer/portainer-ce latest 0c03664af9ed 4 weeks ago 308MB
hello-world latest d2c94e258dcb 20 months ago 13.3kB
仓库源 仓库的标签 镜像的id 镜像创建时间 镜像大小
-a, --all Show all images
-q, --quiet Only show image IDs
```
##### 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 暂略