目 录CONTENT

文章目录

Docker命令记录

Jinty
2023-12-19 / 0 评论 / 0 点赞 / 69 阅读 / 23016 字

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

  • 在镜像仓库中查找镜像

[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

参考资料

[1] Docker 搜索 |Docker 文档

0

评论区