docker
docker info
查看当前Docker的信息
[root@VM-8-14-centos ~]# docker info
Client: Docker Engine - Community
Version: 24.0.7
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.11.2
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.21.0
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 2
Server Version: 24.0.7
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 3dd1e886e55dd695541fdcd67420c2888645a495
runc version: v1.1.10-0-g18a0cb0
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 4.18.0-527.el8.x86_64
Operating System: CentOS Stream 8
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.674GiB
Name: VM-8-14-centos
ID: dc165bf6-1829-4a4c-bd04-934f366c805c
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://registry.docker-cn.com/
http://hub-mirror.c.163.com/
Live Restore Enabled: true
docker search
在镜像仓库中查找镜像
[root@VM-8-14-centos ~]# docker search --help
Usage: docker search [OPTIONS] TERM
Search Docker Hub for images
Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results
--no-trunc Don't truncate output
[root@VM-8-14-centos ~]# docker search --filter stars=3 --filter is-official=true --no-trunc --limit=5 tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementation of the Java Servlet and JavaServer Pages technologies 3618 [OK]
tomee Apache TomEE is an all-Apache Java EE certified stack where Apache Tomcat is top dog. 113 [OK]
docker pull
下载一个 Docker 镜像
语法如下:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
其中,NAME
是镜像的名称,TAG
是镜像的标签(可选,默认为latest
),DIGEST
是镜像的摘要(可选)。
可通过 https://hub.docker.com 搜索相关镜像的信息。
例如,要下载官方的 Ubuntu 20.04 镜像,可以使用以下命令:
docker pull ubuntu:20.04
这将从 Docker Hub 上下载 Ubuntu 20.04 镜像,并保存到本地。
如果要下载的镜像不在 Docker Hub 上,可以指定镜像的完整名称,例如:
docker pull myregistry.local:5000/myimage:1.0
这将从 myregistry.local:5000
仓库中下载名称为 myimage
,标签为 1.0
的镜像。
需要注意的是,下载镜像需要一定的时间和带宽。
docker inspect
检查镜像的详情信息
这是一个自定义docker-compose.yaml
运行后的镜像信息:
[root@VM-8-14-centos tomcat]# docker inspect tomcat
[
{
"Id": "e5e421390fc021a0358003c7ffb1456d6d21e02e242cafdd9008b5cf409c6840",
"Created": "2023-12-19T12:41:50.670216823Z",
"Path": "catalina.sh",
"Args": [
"run"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 1869594,
"ExitCode": 0,
"Error": "",
"StartedAt": "2023-12-19T12:42:05.90516353Z",
"FinishedAt": "2023-12-19T12:42:00.261723291Z"
},
"Image": "sha256:f42b2599b503ec40e87b23aa7d192deeab5c36c84a00096b8f26f8f0dfede076",
"ResolvConfPath": "/var/lib/docker/containers/e5e421390fc021a0358003c7ffb1456d6d21e02e242cafdd9008b5cf409c6840/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/e5e421390fc021a0358003c7ffb1456d6d21e02e242cafdd9008b5cf409c6840/hostname",
"HostsPath": "/var/lib/docker/containers/e5e421390fc021a0358003c7ffb1456d6d21e02e242cafdd9008b5cf409c6840/hosts",
"LogPath": "/var/lib/docker/containers/e5e421390fc021a0358003c7ffb1456d6d21e02e242cafdd9008b5cf409c6840/e5e421390fc021a0358003c7ffb1456d6d21e02e242cafdd9008b5cf409c6840-json.log",
"Name": "/tomcat",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/opt/service/tomcat/logs:/usr/local/tomcat/logs:rw",
"/opt/service/tomcat/webapps:/usr/local/tomcat/webapps:rw"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "tomcat_default",
"PortBindings": {
"8080/tcp": [
{
"HostIp": "",
"HostPort": "8080"
}
]
},
"RestartPolicy": {
"Name": "on-failure",
"MaximumRetryCount": 3
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
0,
0
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": null,
"DnsOptions": null,
"DnsSearch": null,
"ExtraHosts": [],
"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": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": null,
"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",
"/sys/devices/virtual/powercap"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/99fdbe4b3793be782dadef099d6daaa66171582a289f0f401169128cc42aebed-init/diff:/var/lib/docker/overlay2/8999134351cb34a136290c4b1bc7d739955ac5bd3b29340305fb3dbb1e2d23c7/diff:/var/lib/docker/overlay2/078fe8b92150e6999ac543c8f349235f1b43d9319a35296b0a19dc15ff975f86/diff:/var/lib/docker/overlay2/7e09cb150df5f6bfe21b0b355faefdd000fa6f087bcaa2a88f311cad9442af21/diff:/var/lib/docker/overlay2/e125f1847722868009f3a878a7d75816a5c05122d8db0cc106e7f8ccc3ba0832/diff:/var/lib/docker/overlay2/e11f15f1be1826757b4a4e1de22e3821fa0833118ecb2f4275c276598a622509/diff:/var/lib/docker/overlay2/81da3b2ef36378d0deb291b735ff8618aebd2f698dd76d434f946e08939288cc/diff:/var/lib/docker/overlay2/47f6fb9fd161b546332b64ab0e8cde6dface9b325221a0032f137c6a4691bdf6/diff:/var/lib/docker/overlay2/5b9758389b84c7967c3b8f0cca585a8c9041552df85c4d089d9db0c775c071bf/diff",
"MergedDir": "/var/lib/docker/overlay2/99fdbe4b3793be782dadef099d6daaa66171582a289f0f401169128cc42aebed/merged",
"UpperDir": "/var/lib/docker/overlay2/99fdbe4b3793be782dadef099d6daaa66171582a289f0f401169128cc42aebed/diff",
"WorkDir": "/var/lib/docker/overlay2/99fdbe4b3793be782dadef099d6daaa66171582a289f0f401169128cc42aebed/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/opt/service/tomcat/webapps",
"Destination": "/usr/local/tomcat/webapps",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/opt/service/tomcat/logs",
"Destination": "/usr/local/tomcat/logs",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "e5e421390fc0",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"TZ=Asia/Shanghai",
"CATALINA_OPTS=-Xms128m -Xmx521m",
"PATH=/usr/local/tomcat/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"JAVA_HOME=/opt/java/openjdk",
"LANG=en_US.UTF-8",
"LANGUAGE=en_US:en",
"LC_ALL=en_US.UTF-8",
"JAVA_VERSION=jdk-21.0.1+12",
"CATALINA_HOME=/usr/local/tomcat",
"TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib",
"LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib",
"GPG_KEYS=5C3C5F3E314C866292F359A8F3AD5C94A67F707E A9C5DF4D22E99998D9875A5110C01C5A2F6059E7",
"TOMCAT_MAJOR=10",
"TOMCAT_VERSION=10.1.17",
"TOMCAT_SHA512=ff9670f9cd49a604e47edfbcfb5855fe59342048c3278ea8736276b51327adf2d076973f3ad1b8aa7870ef26c28cf7111527be810b445c9927f2a457795f5cb6"
],
"Cmd": [
"catalina.sh",
"run"
],
"Image": "tomcat",
"Volumes": null,
"WorkingDir": "/usr/local/tomcat",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"com.docker.compose.config-hash": "bc26fb26f5bc04037ce0d2efc4f492d31f9a74d1803c408523aa26e3a403bcd4",
"com.docker.compose.container-number": "1",
"com.docker.compose.depends_on": "",
"com.docker.compose.image": "sha256:f42b2599b503ec40e87b23aa7d192deeab5c36c84a00096b8f26f8f0dfede076",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "tomcat",
"com.docker.compose.project.config_files": "/opt/service/tomcat/docker-compose.yaml",
"com.docker.compose.project.working_dir": "/opt/service/tomcat",
"com.docker.compose.service": "tomcat",
"com.docker.compose.version": "2.21.0",
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.version": "22.04"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "455e507c9519eed9f526509be74b1b34c7d8c7e4ad820a2851440ea81e0c791f",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"8080/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "8080"
},
{
"HostIp": "::",
"HostPort": "8080"
}
]
},
"SandboxKey": "/var/run/docker/netns/455e507c9519",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"tomcat_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"tomcat",
"tomcat",
"e5e421390fc0"
],
"NetworkID": "7ae474279aa4eb9080534b43e037c0caf984f6d53271c0dee0f12664303db980",
"EndpointID": "ac08e3864d9d79d9000647a41e48e3346b55d414c2a2dcf4685f22b2307f1ab6",
"Gateway": "172.20.0.1",
"IPAddress": "172.20.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:14:00:02",
"DriverOpts": null
}
}
}
}
]
这是一个在/opt/service/tomcat
路径下的docker-compose.yaml
文件:
#指定语法的版本
version: "3"
#定义服务
services:
# tomcat
tomcat:
# halo镜像
image: tomcat
# 容器名称
container_name: tomcat
# 重启机制
restart: on-failure:3
# 运行环境参数
environment:
# 时区:亚洲/上海
TZ: Asia/Shanghai
# jvm参数: -Xms1024m - 将JVM的初始堆大小设置为128 MB; Xmx1024m - 将JVM的最大堆大小设置为512 MB
CATALINA_OPTS: -Xms128m -Xmx512m
# 数据卷映射 主机路径:容器路径
volumes:
- ./logs:/usr/local/tomcat/logs
- ./webapps:/usr/local/tomcat/webapps
# 端口映射
ports:
- "8080:8080"
command: ["catalina.sh", "run"]
对编写docker-compose.yaml有不少帮助
docker exec
进入正在运行的指定容器
docker exec -it 容器id 容器内路径(一般/bin/bash)
[root@VM-8-14-centos ddw]# docker exec --help
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Execute a command in a running container
Aliases:
docker container exec, docker exec
Options:
-d, --detach Detached mode: run command in the background
--detach-keys string Override the key sequence for detaching a container
-e, --env list Set environment variables
--env-file list Read in a file of environment variables
-i, --interactive Keep STDIN open even if not attached
--privileged Give extended privileges to the command
-t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format: "<name|uid>[:<group|gid>]")
-w, --workdir string Working directory inside the container
[root@VM-8-14-centos ddw]# docker ps | grep ddw
0d37f4471e62 ddw:1.0 "catalina.sh run" 14 minutes ago Up 9 minutes (unhealthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp ddw
[root@VM-8-14-centos ddw]# docker exec -it 0d37f4471e62 /bin/bash
root@0d37f4471e62:/usr/local/tomcat# ll
total 172
drwxr-xr-x 1 root root 4096 Dec 17 00:06 ./
drwxr-xr-x 1 root root 4096 Dec 17 00:04 ../
drwxr-xr-x 2 root root 4096 Dec 17 00:06 bin/
-rw-r--r-- 1 root root 20122 Dec 8 07:31 BUILDING.txt
drwxr-xr-x 1 root root 4096 Dec 19 23:28 conf/
-rw-r--r-- 1 root root 6210 Dec 8 07:31 CONTRIBUTING.md
drwxr-xr-x 2 root root 4096 Dec 17 00:05 lib/
-rw-r--r-- 1 root root 60393 Dec 8 07:31 LICENSE
drwxrwxrwt 1 root root 4096 Dec 19 23:28 logs/
drwxr-xr-x 2 root root 4096 Dec 17 00:06 native-jni-lib/
-rw-r--r-- 1 root root 2333 Dec 8 07:31 NOTICE
-rw-r--r-- 1 root root 3398 Dec 8 07:31 README.md
-rw-r--r-- 1 root root 6776 Dec 8 07:31 RELEASE-NOTES
-rw-r--r-- 1 root root 16076 Dec 8 07:31 RUNNING.txt
drwxrwxrwt 2 root root 4096 Dec 17 00:05 temp/
drwxr-xr-x 1 root root 4096 Dec 19 23:28 webapps/
drwxr-xr-x 7 root root 4096 Dec 8 07:31 webapps.dist/
drwxrwxrwt 1 root root 4096 Dec 19 23:28 work/
root@0d37f4471e62:/usr/local/tomcat#
docker build
用于使用 Dockerfile 创建镜像
docker build -t 镜像名称:镜像标签 用来构建镜像的Dockerfile路径
使用示例:
[root@VM-8-14-centos ddw]# ll
total 12964
-rw-r--r-- 1 root root 13266402 Dec 19 23:04 ddw.war
-rw-r--r-- 1 root root 919 Dec 19 23:14 docker-compose.yaml
-rw-r--r-- 1 root root 491 Dec 19 23:11 Dockerfile
[root@VM-8-14-centos ddw]# cat Dockerfile
# 基于tomcat镜像创建
FROM tomcat
# 新镜像的维护人信息
MAINTAINER jinty@jcoo.com.cn
# #将当前路径下的ddw.war拷贝到tomcat镜像的/usr/local/tomcat/webapps/下
ADD ./ddw.war /usr/local/tomcat/webapps/
# 指定新镜像加载到Docker时要开启端口
EXPOSE 8080
# 指令启动容器时要运行的命令或脚本,Dockerfile只能有一条CMD指令,如果要指定多条则只能最后一条执行
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
[root@VM-8-14-centos ddw]# docker build -t ddw:2.0 .
[+] Building 0.1s (7/7) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 530B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/tomcat:latest 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 31B 0.0s
=> [1/2] FROM docker.io/library/tomcat 0.0s
=> CACHED [2/2] ADD ./ddw.war /usr/local/tomcat/webapps/ 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:7ae93e434f78175ad575cd77bd596495f7f83801f1c0a274eece76e56975778a 0.0s
=> => naming to docker.io/library/ddw:2.0
[root@VM-8-14-centos ddw]# docker images | grep 2.0
ddw 2.0 7ae93e434f78 41 minutes ago 467MB
mysql 8.1.0 ae2502152260 4 months ago 574MB
docker cp
docker compose
docker-compose.yaml用法示例
#指定语法的版本
version: "3"
#定义服务
services:
# ddw
ddw:
# ddw镜像
image: ddw:1.0
# 容器名称
container_name: ddw
# 重启机制
restart: on-failure:3
# 运行环境参数
environment:
# 时区:亚洲/上海
TZ: Asia/Shanghai
# jvm参数: -Xms1024m - 将JVM的初始堆大小设置为128 MB; Xmx1024m - 将JVM的最大堆大小设置为512 MB
CATALINA_OPTS: -Xms128m -Xmx512m
# # 数据卷映射 主机路径:容器路径
# volumes:
# - ./logs:/usr/local/tomcat/logs
# 端口映射
ports:
- "8080:8080"
# 健康检测
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
# 命令
command: ["catalina.sh", "run"]
docker compose up
docker compose
评论区