Centos7 Docker 常用命令速查

321 阅读51分钟
highlight: github

Docker 安装

卸载旧版本

在尝试安装新版本之前,卸载任何此类旧版本以及相关的依赖项:

# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

如果yum报告未安装任何这些软件包,则无所谓。

卸载docker时,存储在/var/lib/docker/中的图像、容器、数据卷和网络不会自动删除。

安装基础环境

在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。

安装yum utils包(它提供了yum config manager实用程序)并设置存储库。

# yum install -y yum-utils# yum-config-manager \
    --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装社区版

# yum install docker-ce

设置开机自启

# systemctl enable docker

启动

# systemctl start docker

查看版本信息

# docker version
Client: Docker Engine - Community
 Version:           23.0.1
 API version:       1.42
 Go version:        go1.19.5
 Git commit:        a5ee5b1
 Built:             Thu Feb  9 19:51:00 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.1
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.5
  Git commit:       bc3805a
  Built:            Thu Feb  9 19:48:42 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.16
  GitCommit:        31aa4358a36870b21a992d3ad2bef29e1d693bec
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

该命令展示 Docker 客户端和服务端的版本信息,如出现以上信息,则代表Docker安装成功。

配置国内镜像

# vim /etc/docker/daemon.json

daemon.json内写入Docker中国区官方镜像。

{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}

常用命令

概要信息

# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.10.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.16.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose
  scan: Docker Scan (Docker Inc.)
    Version:  v0.23.0
    Path:     /usr/libexec/docker/cli-plugins/docker-scan

Server:
 Containers: 0 # 容器的数量
  Running: 0   # 运行中的容器数量
  Paused: 0    # 暂停的容器数量
  Stopped: 0   # 停止的容器数量
 Images: 0     # 镜像数量
 Server Version: 23.0.1
 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: 31aa4358a36870b21a992d3ad2bef29e1d693bec
 runc version: v1.1.4-0-g5fd4c4d
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 3.10.0-1160.71.1.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.608GiB
 Name: VM-12-6-centos
 ID: 02eff05d-c909-4507-901a-f9341ceaea0b
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

镜像

搜索镜像

在 Docker Hub 中搜索镜像

用法:

docker search [OPTIONS] TERM
​
Search Docker Hub for images
 
Options:
      --format string   使用模板格式化显示输出
      --limit int       限制搜索输出个数,默认25个
      --no-trunc        禁止截断输出,使对镜像的描述不中断

实例:

# docker search mysql
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   13786     [OK]       
mariadb                         MariaDB Server is a high performing open sou…   5264      [OK]       
percona                         Percona Server is a fork of the MySQL relati…   599       [OK]       
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   734       [OK]       
circleci/mysql                  MySQL is a widely used, open-source relation…   28                   
bitnami/mysql                   Bitnami MySQL Docker Image                      80                   [OK]
bitnami/mysqld-exporter                                                         4                    
ubuntu/mysql                    MySQL open source fast, stable, multi-thread…   41                   
cimg/mysql                                                                      0                    
rapidfort/mysql                 RapidFort optimized, hardened image for MySQL   14                   
google/mysql                    MySQL server for Google Compute Engine          23                   [OK]
ibmcom/mysql-s390x              Docker image for mysql-s390x                    2                    
rapidfort/mysql8-ib             RapidFort optimized, hardened image for MySQ…   0                    
hashicorp/mysql-portworx-demo                                                   0                    
newrelic/mysql-plugin           New Relic Plugin for monitoring MySQL databa…   1                    [OK]
rapidfort/mysql-official        RapidFort optimized, hardened image for MySQ…   0                    
databack/mysql-backup           Back up mysql databases to... anywhere!         81                   
linuxserver/mysql               A Mysql container, brought to you by LinuxSe…   38                   
mirantis/mysql                                                                  0                    
docksal/mysql                   MySQL service images for Docksal - https://d…   0                    
vitess/mysqlctld                vitess/mysqlctld                                1                    [OK]
linuxserver/mysql-workbench                                                     48                   
eclipse/mysql                   Mysql 5.7, curl, rsync                          0                    [OK]
drud/mysql                                                                      0                    
silintl/mysql-backup-restore    Simple docker image to perform mysql backups…   0                    [OK]

说明:

  • NAME: 镜像名称,其中部分镜像名称由两部分组成,/前面为上传镜像的用户,/后面为镜像的真正名称,而不带/的镜像则代表由 docker 官方提供和维护
  • DESCRIPTION: 镜像描述
  • STARS: 表示点赞、喜欢的星数
  • OFFICIAL: 是否 docker 官方发布
  • AUTOMATED: 是否自动构建

下载镜像

从镜像仓库中拉取镜像

用法:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
​
Download an image from a registry
​
Aliases:
  docker image pull, docker pull
​
Options:
  -a, --all-tags                下载所有标签镜像
      --disable-content-trust   跳过验证,默认值true
      --platform string         如果服务器支持多平台,则设置平台 
  -q, --quiet                   静默输出

实例:

# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
197c1adcd755: Pull complete 
45f2e353f7d2: Pull complete 
68ec6ece42ef: Pull complete 
cfa4d9a7b88e: Pull complete 
64cab5858b1d: Pull complete 
92fcd248d982: Pull complete 
88635e83312d: Pull complete 
43f0427259d9: Pull complete 
79828698a290: Pull complete 
a8854781893e: Pull complete 
6c8bdf3091d9: Pull complete 
Digest: sha256:8653a170e0b0df19ea95055267def2615fc53c62df529e3750817c1a886485f0
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

说明:

没有提供镜像标签时,Docker 会默认使用 latest 这个标签,下载最新版。

目前如果想要看仓库镜像的tag,貌似只能去仓库的网站

镜像列表

输出本地的镜像列表

用法:

docker images [OPTIONS] [REPOSITORY[:TAG]]
​
List images
​
Aliases:
  docker image ls, docker image list, docker images
​
Options:
  -a, --all             显示所有镜像 (默认情况下,会过滤掉中间映像层)
      --digests         显示 DIGEST 列
  -f, --filter filter   根据提供的条件过滤输出
      --format string   使用自定义模板设置输出格式:
                        'table':            以带有列标题的表格格式打印输出(默认)
                        'table TEMPLATE':   使用给定的Go模板以表格格式打印输出
                        'json':             以JSON格式打印
                        'TEMPLATE':         使用给定的Go模板打印输出。
                        有关使用模板格式化输出的详细信息可参考 https://docs.docker.com/go/formatting/
      --no-trunc        禁止截断输出,显示完整的镜像信息
  -q, --quiet           只显示镜像ID

实例:

# docker images
REPOSITORY       TAG       IMAGE ID       CREATED         SIZE
mysql            latest    57da161f45ac   4 days ago      517MB
circleci/mysql   latest    9e8d77206977   11 months ago   519MB

说明:

  • REPOSITORY: 镜像来源及名称,/前面为上传镜像的用户,/后面为镜像的真正名称,而不带/的镜像则代表由 docker 官方提供和维护
  • TAG: 镜像的标签信息,latest标识最新的版本
  • IMAGE ID: 镜像的ID
  • CREATED: 镜像的创建或更新时间
  • SIZE: 镜像大小

镜像详情

输出本地镜像或容器详情

用法:

docker inspect [OPTIONS] NAME|ID [NAME|ID...]
​
Return low-level information on Docker objects
​
Options:
  -f, --format string   使用自定义模板设置输出格式:
                        'json':             以JSON格式打印
                        'TEMPLATE':         使用给定的Go模板打印输出。
                        有关使用模板格式化输出的详细信息可参考  https://docs.docker.com/go/formatting/
  -s, --size            如果类型为容器,则显示总文件大小
      --type string     返回指定类型的JSON

实例:

# docker images
REPOSITORY       TAG       IMAGE ID       CREATED         SIZE
mysql            latest    57da161f45ac   4 days ago      517MB
circleci/mysql   latest    9e8d77206977   11 months ago   519MB
# docker inspect mysql
[
    {
        "Id": "sha256:57da161f45ac3835bc872dcb50f0cde87f65661ba8f50a5a0835dee7e262703f",
        "RepoTags": [
            "mysql:latest"
        ],
        "RepoDigests": [
            "mysql@sha256:8653a170e0b0df19ea95055267def2615fc53c62df529e3750817c1a886485f0"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2023-02-08T20:01:39.525196514Z",
        "Container": "3fc861c410a6e77d7f4152c7affc7230a44833db02b925709b86333c1e081544",
        "ContainerConfig": {
            "Hostname": "3fc861c410a6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {},
                "33060/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.16",
                "MYSQL_MAJOR=8.0",
                "MYSQL_VERSION=8.0.32-1.el8",
                "MYSQL_SHELL_VERSION=8.0.32-1.el8"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD ["mysqld"]"
            ],
            "Image": "sha256:a66401127c3a33f43fbe76f054fff64fdaa6e2eea779f7ed47ff7d4ad719ee90",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "20.10.12",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {},
                "33060/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.16",
                "MYSQL_MAJOR=8.0",
                "MYSQL_VERSION=8.0.32-1.el8",
                "MYSQL_SHELL_VERSION=8.0.32-1.el8"
            ],
            "Cmd": [
                "mysqld"
            ],
            "Image": "sha256:a66401127c3a33f43fbe76f054fff64fdaa6e2eea779f7ed47ff7d4ad719ee90",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 517465864,
        "VirtualSize": 517465864,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/b3113484ad626432897f4907d9506a9cc17fb6c74c98646fd37dbde6f1c46256/diff:/var/lib/docker/overlay2/6c09777edda9df90c5ae726f31ae86d8d5d05e3fdba47b13737f0faa9f240288/diff:/var/lib/docker/overlay2/a8b9d5fb52c3758e069c5fa9fac10c9fa21c6030ff0203756fc0d786d76475f6/diff:/var/lib/docker/overlay2/497d197a7d280f8440acc4580e58f19590481426b9bf285de99cc132dd7ff0cf/diff:/var/lib/docker/overlay2/380189d7b6bf504b396a9effc55da879b586db395896e045f3775d0ea38357c5/diff:/var/lib/docker/overlay2/17094362ff36d02f78bac3105128cd7ce096127edf866239f4fb02dbc27aff8f/diff:/var/lib/docker/overlay2/b753bc7060fb95ea89fbd2aedfe73c1fd08dd41215500a3fadafa5cf5cbb7970/diff:/var/lib/docker/overlay2/98b9c12c483f7bb53f4234a3cb6f73a1b3546bdf2a05edd5ebb48e8dda310905/diff:/var/lib/docker/overlay2/7d1f075746db05dd13a5c79f1b5de978726719a28679e0589a20ffddfe5e9e0e/diff:/var/lib/docker/overlay2/22744c471f5cce0f17c43d9a39030c1c2204dcc03d148d3fe797ffed37e1373c/diff",
                "MergedDir": "/var/lib/docker/overlay2/80f0788ca40d677640047ee6b2c1ec87ff096975af1aec67e9a8260f473c52af/merged",
                "UpperDir": "/var/lib/docker/overlay2/80f0788ca40d677640047ee6b2c1ec87ff096975af1aec67e9a8260f473c52af/diff",
                "WorkDir": "/var/lib/docker/overlay2/80f0788ca40d677640047ee6b2c1ec87ff096975af1aec67e9a8260f473c52af/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:9cd9df9ffc972e9abc946d855162ef0c40dff9a89f10c962b7920154a3d943d8",
                "sha256:824505732bf475e99d3d9f2d2a1bbcb2f822005a5eb42ed3bd6c90d896601cf6",
                "sha256:0b175674497447465ef1a69f9aa74eaad5fc89875eceb9257b1f51723a676b22",
                "sha256:824c2933e60c068e80f2aeed3156289d52e173302c9591307186a1901d511747",
                "sha256:4645c1089915b7a96108959a038bbabd1a9301561c04884ee25217fbd8529cbd",
                "sha256:2dddefc501cc94ee7378f11117eb7537f18e42dff066fd0b0e352579fa201e47",
                "sha256:3e8acfe4342fadf5703bc0e57f029aa8645f5bdad6071289b98f33e1b207f522",
                "sha256:5f038062397273abd71d4393adf7dbf3b5517e0f2c660054d1bedb1d629e3dd9",
                "sha256:16f4176c5cad94a63121b2f4f77a2027f15c8b88559d423daf345a51d41251eb",
                "sha256:394c5cd5b4baf7e17088e44077a8b14ecbd9ba5d460629f1efb8ea3a90380a08",
                "sha256:e2eaf447bf15d59b9e8f4e7c00c63cf35bf9096403563eed770cd758d27eb557"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

删除镜像

删除本地镜像

用法:

docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images

Aliases:
  docker image rm, docker image remove, docker rmi

Options:
  -f, --force      强制删除镜像
      --no-prune   不删除该镜像的过程镜像,默认移除

实例:

# docker images
REPOSITORY       TAG       IMAGE ID       CREATED         SIZE
mysql            latest    57da161f45ac   4 days ago      517MB
circleci/mysql   latest    9e8d77206977   11 months ago   519MB
# docker rmi circleci/mysql
Untagged: circleci/mysql:latest
Untagged: circleci/mysql@sha256:b8aabed03a3c72f4aa1501a565c7a0d87dd3e53ab84dca8da41c78cb0ca8eb78
Deleted: sha256:9e8d772069776d016a447ac629a34271e2d4e8b4c87fbe94e3ba5610d2560403
Deleted: sha256:36aec3689394b4c4257e3283e9baaab67124ea31be8d74dfdebf3d9ba8be1971
Deleted: sha256:10bf39a24625d39d92249386510885f15b705a5da74945f98256fd0817fe7eb5
Deleted: sha256:1667cf286d930e8ffb90f90db8b2a059a02bafd3c6f70e8e565d69c3e4abe34e
Deleted: sha256:8f3d1a0a2d4178c0fede3eaa19f33d320209f46ef7268d97cebb590a8985264d
Deleted: sha256:cc08389d540a702be5110a2147430d0b4c935119e53a737e1d8a1d2f43bba038
Deleted: sha256:f9987717a989ba21aee0a3ef5b1189a507eb393aa0e88de58435357b3ec6dd92
Deleted: sha256:c5a578662a7c39216cc7832bb64b81ada6bc73c639effa8117f223672ea9aba0
Deleted: sha256:156aa1a11e93325c2fc2303736d7902a0be9ad4b29d30561ab6b12050ad12f46
Deleted: sha256:6a4d005549c580ebf87f192fdcfb1c9dfd91f4ff6b934d284c9cb49f2af13fd5
Deleted: sha256:59fc12d50d81beac733e8069de09b0d8f05f518783076d0a11082fff76535355
Deleted: sha256:a85e24ac4d077fd96f02199a49127739f0e9ad1299bea356e33e96e7a59327d3
Deleted: sha256:c463c437c67d8fe9ae10b80b84128e5673032a2f0f5951956b2da99160623533
Deleted: sha256:f18b02b14138b6f9808f9843cc645e2edd64b02ca1c87e671355f56d1b4b5ec6
# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
mysql        latest    57da161f45ac   4 days ago   517MB

容器

创建容器

根据本地镜像创建容器

用法:

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
​
Create a new container
​
Aliases:
  docker container create, docker create
​
Options:
      --add-host list                  Add a custom host-to-IP mapping (host:ip)
  -a, --attach list                    Attach to STDIN, STDOUT or STDERR
      --blkio-weight uint16            Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --blkio-weight-device list       Block IO weight (relative device weight) (default [])
      --cap-add list                   Add Linux capabilities
      --cap-drop list                  Drop Linux capabilities
      --cgroup-parent string           Optional parent cgroup for the container
      --cgroupns string                Cgroup namespace to use (host|private)
                                       'host':    Run the container in the Docker host's cgroup namespace
                                       'private': Run the container in its own private cgroup namespace
                                       '':        Use the cgroup namespace as configured by the
                                                  default-cgroupns-mode option on the daemon (default)
      --cidfile string                 Write the container ID to the file
      --cpu-period int                 Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int                  Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int              Limit CPU real-time period in microseconds
      --cpu-rt-runtime int             Limit CPU real-time runtime in microseconds
  -c, --cpu-shares int                 CPU份额(相对权重)
      --cpus decimal                   Number of CPUs
      --cpuset-cpus string             CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string             MEMs in which to allow execution (0-3, 0,1)
      --device list                    Add a host device to the container
      --device-cgroup-rule list        Add a rule to the cgroup allowed devices list
      --device-read-bps list           Limit read rate (bytes per second) from a device (default [])
      --device-read-iops list          Limit read rate (IO per second) from a device (default [])
      --device-write-bps list          Limit write rate (bytes per second) to a device (default [])
      --device-write-iops list         Limit write rate (IO per second) to a device (default [])
      --disable-content-trust          Skip image verification (default true)
      --dns list                       Set custom DNS servers
      --dns-option list                Set DNS options
      --dns-search list                Set custom DNS search domains
      --domainname string              Container NIS domain name
      --entrypoint string              Overwrite the default ENTRYPOINT of the image
  -e, --env list                       设置环境变量
      --env-file list                  读入环境变量文件
      --expose list                    Expose a port or a range of ports
      --gpus gpu-request               GPU devices to add to the container ('all' to pass all GPUs)
      --group-add list                 Add additional groups to join
      --health-cmd string              Command to run to check health
      --health-interval duration       Time between running the check (ms|s|m|h) (default 0s)
      --health-retries int             Consecutive failures needed to report unhealthy
      --health-start-period duration   Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)
      --health-timeout duration        Maximum time to allow one check to run (ms|s|m|h) (default 0s)
      --help                           Print usage
  -h, --hostname string                容器主机名
      --init                           Run an init inside the container that forwards signals and reaps processes
  -i, --interactive                    以交互模式运行容器
      --ip string                      IPv4 address (e.g., 172.30.100.104)
      --ip6 string                     IPv6 address (e.g., 2001:db8::33)
      --ipc string                     IPC mode to use
      --isolation string               Container isolation technology
      --kernel-memory bytes            Kernel memory limit
  -l, --label list                     在容器上设置元数据
      --label-file list                Read in a line delimited file of labels
      --link list                      Add link to another container
      --link-local-ip list             Container IPv4/IPv6 link-local addresses
      --log-driver string              Logging driver for the container
      --log-opt list                   Log driver options
      --mac-address string             Container MAC address (e.g., 92:d0:c6:0a:29:33)
  -m, --memory bytes                   内存限制
      --memory-reservation bytes       Memory soft limit
      --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --memory-swappiness int          Tune container memory swappiness (0 to 100) (default -1)
      --mount mount                    Attach a filesystem mount to the container
      --name string                    为容器指定名称
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container
      --no-healthcheck                 Disable any container-specified HEALTHCHECK
      --oom-kill-disable               Disable OOM Killer
      --oom-score-adj int              Tune host's OOM preferences (-1000 to 1000)
      --pid string                     PID namespace to use
      --pids-limit int                 Tune container pids limit (set -1 for unlimited)
      --platform string                Set platform if server is multi-platform capable
      --privileged                     Give extended privileges to this container
  -p, --publish list                   指定端口映射,格式为:主机(宿主)端口:容器端口
  -P, --publish-all                    随机端口映射,容器内部端口随机映射到主机的端口
      --pull string                    Pull image before creating ("always", "|missing", "never") (default "missing")
  -q, --quiet                          Suppress the pull output
      --read-only                      Mount the container's root filesystem as read only
      --restart string                 当容器退出时重新启动的策略(默认为“no”)
      --rm                             Automatically remove the container when it exits
      --runtime string                 Runtime to use for this container
      --security-opt list              Security Options
      --shm-size bytes                 Size of /dev/shm
      --stop-signal string             Signal to stop the container
      --stop-timeout int               Timeout (in seconds) to stop a container
      --storage-opt list               Storage driver options for the container
      --sysctl map                     Sysctl options (default map[])
      --tmpfs list                     Mount a tmpfs directory
  -t, --tty                            Allocate a pseudo-TTY
      --ulimit ulimit                  Ulimit options (default [])
  -u, --user string                    Username or UID (format: <name|uid>[:<group|gid>])
      --userns string                  User namespace to use
      --uts string                     UTS namespace to use
  -v, --volume list                    文件系统挂载
      --volume-driver string           Optional volume driver for the container
      --volumes-from list              Mount volumes from the specified container(s)
  -w, --workdir string                 Working directory inside the container

实例:

# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
mysql        latest    57da161f45ac   4 days ago   517MB
# docker create --name mysql -p 3306:3306 -v /my/own/datadir:/var/lib/mysql --restart always -e MYSQL_ROOT_PASSWORD=123456 mysql
b446365d5041c22bbaf755189a160756320939284f01edbf545bbcbb70473094
# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS    PORTS     NAMES
b446365d5041   mysql     "docker-entrypoint.s…"   12 minutes ago   Created             mysql

说明:

--name mysql指定容器名称为mysql-p 3306:3306指定主机3306端口映射到容器3306端口,-v /my/own/datadir:/var/lib/mysqlBind Mount方式文件系统挂载,--restart always为重启策略,在容器退出时总是重启容器,-e MYSQL_ROOT_PASSWORD=123456是镜像定义的环境变量,指定登录密码为123456

文件系统挂载方式:

  • Bind Mount:将宿主机的目录和文件挂载到容器内,在容器内外对文件的读写,互相可见,命令格式为-v <host-path>:<container-path>,为避免混淆,<host-path><container-path>必须使用绝对路径,不能使用相对路径,如果需要只读的方式挂载,只需在挂载选项 -v 后再接上 :ro
  • Volume :使用数据卷,仅指定容器内的目录,宿主机挂载的目录由 Docker 进行管理,命令格式为-v <name>:<container-path><name>为数据卷名称,可不填写,此时命令格式为-v <container-path>
  • Tmpfs Mount:挂载临时文件目录,命令格式为--tmpfs <container-path>

启动容器

启动一个或多个停止的容器

用法:

docker start [OPTIONS] CONTAINER [CONTAINER...]
​
Start one or more stopped containers
​
Aliases:
  docker container start, docker start
​
Options:
  -a, --attach               Attach STDOUT/STDERR and forward signals
      --detach-keys string   Override the key sequence for detaching a container
  -i, --interactive          Attach container's STDIN

实例:

# docker start mysql
mysql
# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS                                                  NAMES
b446365d5041   mysql     "docker-entrypoint.s…"   14 minutes ago   Up 6 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

说明:

Mysql启动完成。

创建并启动

用法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Create and run a new container from an image

Aliases:
  docker container run, docker run

Options:
      --add-host list                  Add a custom host-to-IP mapping (host:ip)
  -a, --attach list                    Attach to STDIN, STDOUT or STDERR
      --blkio-weight uint16            Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --blkio-weight-device list       Block IO weight (relative device weight) (default [])
      --cap-add list                   Add Linux capabilities
      --cap-drop list                  Drop Linux capabilities
      --cgroup-parent string           Optional parent cgroup for the container
      --cgroupns string                Cgroup namespace to use (host|private)
                                       'host':    Run the container in the Docker host's cgroup namespace
                                       'private': Run the container in its own private cgroup namespace
                                       '':        Use the cgroup namespace as configured by the
                                                  default-cgroupns-mode option on the daemon (default)
      --cidfile string                 Write the container ID to the file
      --cpu-period int                 Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int                  Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int              Limit CPU real-time period in microseconds
      --cpu-rt-runtime int             Limit CPU real-time runtime in microseconds
  -c, --cpu-shares int                 CPU份额(相对权重)
      --cpus decimal                   Number of CPUs
      --cpuset-cpus string             CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string             MEMs in which to allow execution (0-3, 0,1)
  -d, --detach                         在后台运行容器并打印容器ID
      --detach-keys string             Override the key sequence for detaching a container
      --device list                    Add a host device to the container
      --device-cgroup-rule list        Add a rule to the cgroup allowed devices list
      --device-read-bps list           Limit read rate (bytes per second) from a device (default [])
      --device-read-iops list          Limit read rate (IO per second) from a device (default [])
      --device-write-bps list          Limit write rate (bytes per second) to a device (default [])
      --device-write-iops list         Limit write rate (IO per second) to a device (default [])
      --disable-content-trust          Skip image verification (default true)
      --dns list                       Set custom DNS servers
      --dns-option list                Set DNS options
      --dns-search list                Set custom DNS search domains
      --domainname string              Container NIS domain name
      --entrypoint string              Overwrite the default ENTRYPOINT of the image
  -e, --env list                       设置环境变量
      --env-file list                  Read in a file of environment variables
      --expose list                    Expose a port or a range of ports
      --gpus gpu-request               GPU devices to add to the container ('all' to pass all GPUs)
      --group-add list                 Add additional groups to join
      --health-cmd string              Command to run to check health
      --health-interval duration       Time between running the check (ms|s|m|h) (default 0s)
      --health-retries int             Consecutive failures needed to report unhealthy
      --health-start-period duration   Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)
      --health-timeout duration        Maximum time to allow one check to run (ms|s|m|h) (default 0s)
      --help                           Print usage
  -h, --hostname string                容器主机名
      --init                           Run an init inside the container that forwards signals and reaps processes
  -i, --interactive                    以交互模式运行容器
      --ip string                      IPv4 address (e.g., 172.30.100.104)
      --ip6 string                     IPv6 address (e.g., 2001:db8::33)
      --ipc string                     IPC mode to use
      --isolation string               Container isolation technology
      --kernel-memory bytes            Kernel memory limit
  -l, --label list                     在容器上设置元数据
      --label-file list                Read in a line delimited file of labels
      --link list                      Add link to another container
      --link-local-ip list             Container IPv4/IPv6 link-local addresses
      --log-driver string              Logging driver for the container
      --log-opt list                   Log driver options
      --mac-address string             Container MAC address (e.g., 92:d0:c6:0a:29:33)
  -m, --memory bytes                   内存限制
      --memory-reservation bytes       Memory soft limit
      --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --memory-swappiness int          Tune container memory swappiness (0 to 100) (default -1)
      --mount mount                    Attach a filesystem mount to the container
      --name string                    Assign a name to the container
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container
      --no-healthcheck                 Disable any container-specified HEALTHCHECK
      --oom-kill-disable               Disable OOM Killer
      --oom-score-adj int              Tune host's OOM preferences (-1000 to 1000)
      --pid string                     PID namespace to use
      --pids-limit int                 Tune container pids limit (set -1 for unlimited)
      --platform string                Set platform if server is multi-platform capable
      --privileged                     Give extended privileges to this container
  -p, --publish list                   指定端口映射,格式为:主机(宿主)端口:容器端口
  -P, --publish-all                    随机端口映射,容器内部端口随机映射到主机的端口
      --pull string                    Pull image before running ("always", "missing", "never") (default "missing")
  -q, --quiet                          Suppress the pull output
      --read-only                      Mount the container's root filesystem as read only
      --restart string                 当容器退出时重新启动的策略(默认为“no”)
      --rm                             Automatically remove the container when it exits
      --runtime string                 Runtime to use for this container
      --security-opt list              Security Options
      --shm-size bytes                 Size of /dev/shm
      --sig-proxy                      Proxy received signals to the process (default true)
      --stop-signal string             Signal to stop the container
      --stop-timeout int               Timeout (in seconds) to stop a container
      --storage-opt list               Storage driver options for the container
      --sysctl map                     Sysctl options (default map[])
      --tmpfs list                     Mount a tmpfs directory
  -t, --tty                            Allocate a pseudo-TTY
      --ulimit ulimit                  Ulimit options (default [])
  -u, --user string                    Username or UID (format: <name|uid>[:<group|gid>])
      --userns string                  User namespace to use
      --uts string                     UTS namespace to use
  -v, --volume list                    文件系统挂载
      --volume-driver string           Optional volume driver for the container
      --volumes-from list              Mount volumes from the specified container(s)
  -w, --workdir string                 Working directory inside the container

实例:

# docker run -d --name mysql -p 3306:3306 --restart always -e MYSQL_ROOT_PASSWORD=1234556 mysql
ee00dc927aebacdaeac4667fc6f3b0417ec9954703836c256f2f793b97468656
# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
ee00dc927aeb   mysql     "docker-entrypoint.s…"   31 seconds ago   Up 30 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

说明:

-d为后台运行。

容器列表

展示容器列表

用法:

docker ps [OPTIONS]
​
List containers
​
Aliases:
  docker container ls, docker container list, docker container ps, docker ps
​
Options:
  -a, --all             显示所有容器(默认仅显示运行中的容器)
  -f, --filter filter   根据提供的条件过滤输出
      --format string   使用自定义模板设置输出格式:
                        'table':            以带有列标题的表格格式打印输出(默认)
                        'table TEMPLATE':   使用给定的Go模板以表格格式打印输出
                        'json':             以JSON格式打印
                        'TEMPLATE':         使用给定的Go模板打印输出。
                        有关使用模板格式化输出的详细信息可参考 https://docs.docker.com/go/formatting/
  -n, --last int        显示n个上次创建的容器(包括所有状态)(默认值-1)
  -l, --latest          显示最新创建的容器(包括所有状态)
      --no-trunc        不截断输出
  -q, --quiet           仅显示容器ID
  -s, --size            显示总文件大小

实例:

# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                                                  NAMES
ee00dc927aeb   mysql     "docker-entrypoint.s…"   10 hours ago   Up 10 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

说明:

  • CONTAINER ID: 容器 ID
  • IMAGE: 使用的镜像
  • COMMAND: 启动容器时运行的命令
  • CREATED: 容器的创建时间
  • STATUS: 容器状态
    • Created:已创建,相关资源已经准备就绪,但未运行
    • Running:运行中,容器中的应用正在运行
    • Paused:已暂停,容器中的所有程序都处于暂停状态
    • Stopped:已停止,但占用的资源和沙盒环境都依然存在
    • Deleted:已删除,相关占用的资源及存储也已释放和移除。
  • PORTS: 容器的端口信息和使用的连接类型(TCP/UDP
  • NAMES: 容器名称

容器详情

输出本地镜像或容器详情

用法:

docker inspect [OPTIONS] NAME|ID [NAME|ID...]
​
Return low-level information on Docker objects
​
Options:
  -f, --format string   使用自定义模板设置输出格式:
                        'json':             以JSON格式打印
                        'TEMPLATE':         使用给定的Go模板打印输出。
                        有关使用模板格式化输出的详细信息可参考  https://docs.docker.com/go/formatting/
  -s, --size            如果类型为容器,则显示总文件大小
      --type string     返回指定类型的JSON

实例:

# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                                                  NAMES
5d7b25c0f2b4   mysql     "docker-entrypoint.s…"   10 hours ago   Up 10 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
# docker inspect 5d7b25c0f2b4
[
    {
        "Id": "5d7b25c0f2b4370132e62c44375926763b05fe8b266221e224e514c0e7593ed9",
        "Created": "2023-02-14T02:51:53.028962985Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "mysqld"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 3056,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2023-02-14T02:51:53.377747741Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:57da161f45ac3835bc872dcb50f0cde87f65661ba8f50a5a0835dee7e262703f",
        "ResolvConfPath": "/var/lib/docker/containers/5d7b25c0f2b4370132e62c44375926763b05fe8b266221e224e514c0e7593ed9/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/5d7b25c0f2b4370132e62c44375926763b05fe8b266221e224e514c0e7593ed9/hostname",
        "HostsPath": "/var/lib/docker/containers/5d7b25c0f2b4370132e62c44375926763b05fe8b266221e224e514c0e7593ed9/hosts",
        "LogPath": "/var/lib/docker/containers/5d7b25c0f2b4370132e62c44375926763b05fe8b266221e224e514c0e7593ed9/5d7b25c0f2b4370132e62c44375926763b05fe8b266221e224e514c0e7593ed9-json.log",
        "Name": "/mysql",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {
                "3306/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "3306"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "always",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                34,
                143
            ],
            "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/16ecf1a27620855cae51742881c615c142596cc4aadf876fa1945bf9a7bf24ff-init/diff:/var/lib/docker/overlay2/80f0788ca40d677640047ee6b2c1ec87ff096975af1aec67e9a8260f473c52af/diff:/var/lib/docker/overlay2/b3113484ad626432897f4907d9506a9cc17fb6c74c98646fd37dbde6f1c46256/diff:/var/lib/docker/overlay2/6c09777edda9df90c5ae726f31ae86d8d5d05e3fdba47b13737f0faa9f240288/diff:/var/lib/docker/overlay2/a8b9d5fb52c3758e069c5fa9fac10c9fa21c6030ff0203756fc0d786d76475f6/diff:/var/lib/docker/overlay2/497d197a7d280f8440acc4580e58f19590481426b9bf285de99cc132dd7ff0cf/diff:/var/lib/docker/overlay2/380189d7b6bf504b396a9effc55da879b586db395896e045f3775d0ea38357c5/diff:/var/lib/docker/overlay2/17094362ff36d02f78bac3105128cd7ce096127edf866239f4fb02dbc27aff8f/diff:/var/lib/docker/overlay2/b753bc7060fb95ea89fbd2aedfe73c1fd08dd41215500a3fadafa5cf5cbb7970/diff:/var/lib/docker/overlay2/98b9c12c483f7bb53f4234a3cb6f73a1b3546bdf2a05edd5ebb48e8dda310905/diff:/var/lib/docker/overlay2/7d1f075746db05dd13a5c79f1b5de978726719a28679e0589a20ffddfe5e9e0e/diff:/var/lib/docker/overlay2/22744c471f5cce0f17c43d9a39030c1c2204dcc03d148d3fe797ffed37e1373c/diff",
                "MergedDir": "/var/lib/docker/overlay2/16ecf1a27620855cae51742881c615c142596cc4aadf876fa1945bf9a7bf24ff/merged",
                "UpperDir": "/var/lib/docker/overlay2/16ecf1a27620855cae51742881c615c142596cc4aadf876fa1945bf9a7bf24ff/diff",
                "WorkDir": "/var/lib/docker/overlay2/16ecf1a27620855cae51742881c615c142596cc4aadf876fa1945bf9a7bf24ff/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "be9615fcc00528f106b7620b44755d8a3329dfc5883d349340e01fcbcdedffb4",
                "Source": "/var/lib/docker/volumes/be9615fcc00528f106b7620b44755d8a3329dfc5883d349340e01fcbcdedffb4/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "5d7b25c0f2b4",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {},
                "33060/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "MYSQL_ROOT_PASSWORD=123456",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.16",
                "MYSQL_MAJOR=8.0",
                "MYSQL_VERSION=8.0.32-1.el8",
                "MYSQL_SHELL_VERSION=8.0.32-1.el8"
            ],
            "Cmd": [
                "mysqld"
            ],
            "Image": "mysql",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "bc8699aa55f62914562df39ee5e402c68ff2a35765aefc38637445f48ff2f47a",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "3306/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "3306"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "3306"
                    }
                ],
                "33060/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/bc8699aa55f6",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "0ef197ce5712afb2b1a4168bafde7ce1aba7e1fe3f36f55bc0216a2a333eecf0",
            "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": "074427b8ed2efda2b95526f7c28af69197246cb2fa20be006d9813c616df6d7f",
                    "EndpointID": "0ef197ce5712afb2b1a4168bafde7ce1aba7e1fe3f36f55bc0216a2a333eecf0",
                    "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 pause CONTAINER [CONTAINER...]Pause all processes within one or more containers
​
Aliases:
  docker container pause, docker pause

实例:

# docker pause mysql
mysql
# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS                 PORTS                                                  NAMES
ee00dc927aeb   mysql     "docker-entrypoint.s…"   10 hours ago   Up 10 hours (Paused)   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

取消暂停

取消一个或多个容器中所有进程的暂停

用法:

docker unpause CONTAINER [CONTAINER...]
​
Unpause all processes within one or more containers
​
Aliases:
  docker container unpause, docker unpause

实例:

# docker unpause mysql 
mysql
# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                                                  NAMES
ee00dc927aeb   mysql     "docker-entrypoint.s…"   10 hours ago   Up 10 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

停止容器

停止一个或多个正在运行的容器

用法:

docker stop [OPTIONS] CONTAINER [CONTAINER...]
​
Stop one or more running containers
​
Aliases:
  docker container stop, docker stopOptions:
  -s, --signal string   Signal to send to the container
  -t, --time int        停止容器前等待的秒数

实例:

# docker stop mysql
mysql
# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS                     PORTS     NAMES
ee00dc927aeb   mysql     "docker-entrypoint.s…"   10 hours ago   Exited (0) 2 seconds ago             mysql

删除容器

删除一个或多个容器

用法:

docker rm [OPTIONS] CONTAINER [CONTAINER...]
​
Remove one or more containers
​
Aliases:
  docker container rm, docker container remove, docker rm
​
Options:
  -f, --force     强制删除正在运行的容器(使用SIGKILL)
  -l, --link      移除容器间的网络连接,而非容器本身
  -v, --volumes   删除与容器关联的卷

实例:

# docker rm mysql
mysql
# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

说明:

删除容器前需要先停止容器,否则会报错。

进入容器

在正在运行的容器中运行新命令

用法:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
​
Execute a command in a running container
​
Aliases:
  docker container exec, docker exec
​
Options:
  -d, --detach               分离模式:在后台运行命令
      --detach-keys string   覆盖容器后台运行的一些参数信息
  -e, --env list             设置环境变量
      --env-file list        Read in a file of environment variables
  -i, --interactive          保持STDIN打开,即使未连接
      --privileged           授予命令扩展权限
  -t, --tty                  分配伪TTY
  -u, --user string          Username or UID (format: "<name|uid>[:<group|gid>]")
  -w, --workdir string       指定容器内的目录

实例:

#  docker exec -it mysql /bin/bash
bash-4.4# ls -l
total 56
lrwxrwxrwx   1 root root    7 Oct  9  2021 bin -> usr/bin
dr-xr-xr-x   2 root root 4096 Oct  9  2021 boot
drwxr-xr-x   5 root root  340 Feb 14 02:51 dev
drwxr-xr-x   2 root root 4096 Feb  8 20:00 docker-entrypoint-initdb.d
lrwxrwxrwx   1 root root   34 Feb  8 20:01 entrypoint.sh -> usr/local/bin/docker-entrypoint.sh
drwxr-xr-x   1 root root 4096 Feb 14 02:51 etc
drwxr-xr-x   2 root root 4096 Oct  9  2021 home
lrwxrwxrwx   1 root root    7 Oct  9  2021 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Oct  9  2021 lib64 -> usr/lib64
drwxr-xr-x   2 root root 4096 Oct  9  2021 media
drwxr-xr-x   2 root root 4096 Oct  9  2021 mnt
drwxr-xr-x   2 root root 4096 Oct  9  2021 opt
dr-xr-xr-x 107 root root    0 Feb 14 02:51 proc
dr-xr-x---   1 root root 4096 Feb 14 03:43 root
drwxr-xr-x   1 root root 4096 Feb  8 20:00 run
lrwxrwxrwx   1 root root    8 Oct  9  2021 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Oct  9  2021 srv
dr-xr-xr-x  13 root root    0 Feb 14 03:43 sys
drwxrwxrwt   1 root root 4096 Feb 14 02:52 tmp
drwxr-xr-x   1 root root 4096 Feb  7 22:59 usr
drwxr-xr-x   1 root root 4096 Feb  7 22:59 var
bash-4.4# exit
exit

说明:

使用docker exec启动的命令仅在容器的主进程(PID 1)运行时运行,如果容器重新启动,则不会重新启动。

如果在Dockerfile中指定了工作目录,则会进入Dokcerfile指定的目录,如果命令中指定了工作目录-w则会进入该目录。

网络

网络列表

展示网络列表

用法:

docker network ls [OPTIONS]
​
List networks
​
Aliases:
  docker network ls, docker network list
​
Options:
  -f, --filter filter   提供过滤器值(例如“driver=bridge”)
      --format string   使用自定义模板设置输出格式:
                        'table':            以带有列标题的表格格式打印输出(默认)
                        'table TEMPLATE':   使用给定的Go模板以表格格式打印输出
                        'json':             以JSON格式打印
                        'TEMPLATE':         使用给定的Go模板打印输出。
                        有关使用模板格式化输出的详细信息可参考 https://docs.docker.com/go/formatting/
      --no-trunc        不截断输出
  -q, --quiet           仅显示网络ID

实例:

# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
074427b8ed2e   bridge    bridge    local
f87eab9439c2   host      host      local
e116ac4ef902   none      null      local

网络详情

显示一个或多个网络的详细信息

用法:

docker network inspect [OPTIONS] NETWORK [NETWORK...]

Display detailed information on one or more networks

Options:
  -f, --format string   使用自定义模板设置输出格式:
                        'json':             以JSON格式打印
                        'TEMPLATE':         使用给定的Go模板打印输出。
                        有关使用模板格式化输出的详细信息可参考  https://docs.docker.com/go/formatting/
  -v, --verbose         诊断的详细输出

实例:

# docker network inspect bridge 
[
    {
        "Name": "bridge",
        "Id": "074427b8ed2efda2b95526f7c28af69197246cb2fa20be006d9813c616df6d7f",
        "Created": "2023-02-14T00:01:56.729658995+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "5d7b25c0f2b4370132e62c44375926763b05fe8b266221e224e514c0e7593ed9": {
                "Name": "mysql",
                "EndpointID": "0ef197ce5712afb2b1a4168bafde7ce1aba7e1fe3f36f55bc0216a2a333eecf0",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

创建网络

创建网络

用法:

docker network create [OPTIONS] NETWORK
​
Create a network
​
Options:
      --attachable           启用手动容器安装
      --aux-address map      Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])
      --config-from string   The network from which to copy the configuration
      --config-only          Create a configuration only network
  -d, --driver string        管理网络的驱动程序(默认“bridge”)
      --gateway strings      IPv4 or IPv6 Gateway for the master subnet
      --ingress              Create swarm routing-mesh network
      --internal             限制对网络的外部访问
      --ip-range strings     Allocate container ip from a sub-range
      --ipam-driver string   IP Address Management Driver (default "default")
      --ipam-opt map         Set IPAM driver specific options (default map[])
      --ipv6                 Enable IPv6 networking
      --label list           Set metadata on a network
  -o, --opt map              Set driver specific options (default map[])
      --scope string         Control the network's scope
      --subnet strings       Subnet in CIDR format that represents a network segment

实例:

# docker network create mynetwork
670c5dc3a1a97426f5195eb2f318189d3ff0d658678a1cd716b0b4b77d425266
# docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
074427b8ed2e   bridge      bridge    local
f87eab9439c2   host        host      local
670c5dc3a1a9   mynetwork   bridge    local
e116ac4ef902   none        null      local

说明:

单机网络驱动:

  • bridge: 桥接网络模式,默认网络驱动,此模式会为每一个容器分配、设置IP等,只有宿主机可以访问,外部主机不可见
  • host: 容器将不会虚拟出自己的网卡,配置自己的IP 等,而是使用宿主机的IP和端
  • none: 禁用网络设置

连接容器

将容器连接到网络

用法:

docker network connect [OPTIONS] NETWORK CONTAINER

Connect a container to a network

Options:
      --alias strings           为容器添加网络范围的别名
      --driver-opt strings      指定IP地址
      --ip string               指定IPv6地址 (例如, "172.30.100.104")
      --ip6 string              指定IPv6地址  (例如, "2001:db8::33") 
      --link list               向另一个容器添加链接
      --link-local-ip strings   为容器添加链接本地地址

实例:

# docker network connect mynetwork mysql
# docker inspect mysql
[
"Networks": {
    ......
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "074427b8ed2efda2b95526f7c28af69197246cb2fa20be006d9813c616df6d7f",
                    "EndpointID": "0ef197ce5712afb2b1a4168bafde7ce1aba7e1fe3f36f55bc0216a2a333eecf0",
                    "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
                },
                "mynetwork": {
                    "IPAMConfig": {},
                    "Links": null,
                    "Aliases": [
                        "5d7b25c0f2b4"
                    ],
                    "NetworkID": "29d58403c6fe5c22746078475ed8b57eacb5fad8dd4942b387871ccd8ed44d29",
                    "EndpointID": "3661b359a7bb2923d90c953cecf7d5ee8dfc736a208b400272eb71d831949714",
                    "Gateway": "172.19.0.1",
                    "IPAddress": "172.19.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:13:00:02",
                    "DriverOpts": {}
                }
            }
        }
    }
]

取消连接

断开容器与网络的连接

用法:

docker network disconnect [OPTIONS] NETWORK CONTAINER

Disconnect a container from a network

Options:
  -f, --force   强制容器断开与网络的连接

实例:

# docker network disconnect mynetwork mysql 
# docker inspect mysql
[
    ......
    "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "074427b8ed2efda2b95526f7c28af69197246cb2fa20be006d9813c616df6d7f",
                    "EndpointID": "0ef197ce5712afb2b1a4168bafde7ce1aba7e1fe3f36f55bc0216a2a333eecf0",
                    "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 network rm NETWORK [NETWORK...]

Remove one or more networks

Aliases:
  docker network rm, docker network remove

Options:
  -f, --force   网络不存在,也不输出错误

实例:

# docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
074427b8ed2e   bridge      bridge    local
f87eab9439c2   host        host      local
670c5dc3a1a9   mynetwork   bridge    local
e116ac4ef902   none        null      local
# docker network rm mynetwork 
mynetwork
# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
074427b8ed2e   bridge    bridge    local
f87eab9439c2   host      host      local
e116ac4ef902   none      null      local

清空未使用

删除所有未使用的网络

用法:

docker network prune [OPTIONS]

Remove all unused networks

Options:
      --filter filter   提供过滤器值 (例如 "until=<timestamp>")
  -f, --force           不要提示确认

实例:

# docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
074427b8ed2e   bridge      bridge    local
f87eab9439c2   host        host      local
2ee82f9d2738   mynetwork   bridge    local
e116ac4ef902   none        null      local
# docker network prune -f
Deleted Networks:
mynetwork
# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
074427b8ed2e   bridge    bridge    local
f87eab9439c2   host      host      local
e116ac4ef902   none      null      local

数据卷

数据卷列表

数据卷列表

用法:

docker volume ls [OPTIONS]

List volumes

Aliases:
  docker volume ls, docker volume list

Options:
  -f, --filter filter   提供过滤器值 (例如 "dangling=true")
      --format string   使用自定义模板设置输出格式:
                        'table':            以带有列标题的表格格式打印输出(默认)
                        'table TEMPLATE':   使用给定的Go模板以表格格式打印输出
                        'json':             以JSON格式打印
                        'TEMPLATE':         使用给定的Go模板打印输出。
                        有关使用模板格式化输出的详细信息可参考 https://docs.docker.com/go/formatting/
  -q, --quiet           仅显示卷名称

实例:

# docker volume ls
DRIVER    VOLUME NAME
local     2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81
local     3a85ab8091f7aba73a00c3dc241e5093543922e739fcb8cf6fd049c8bd59c470
local     3e1feef136cedbc252fb512418a981e05a920aac76ebb70af844487e7c0953ab
local     4cdd96211eb97533571ba475dd0c7487777febe96467373cafd2ecb66bbba48a
local     8eb47e03a2f58c5c7cd473da3b64fad22afb29b608507b90a71da55bca49c615
local     9f425b5967b5216ae85b0d8536901849afa1cd3110921a364dbfca0afc4c8551
local     98a50f3fc509baf28bd08cf8946c980ea77a89f4e3dd6d3dba0fd8eca7cf9bc4
local     a7b59c27547d2209ebe9e4ba1d1483371a2406c08fcc83f355a573d9765c5cf8
local     a096a932bb0ab60dcef010de19708584431e09071970b7243d356b08e131b861
local     be9615fcc00528f106b7620b44755d8a3329dfc5883d349340e01fcbcdedffb4
local     e075c52275f92e4aa3a38ba02f31d63d33bcb203d80d4290b26e763857d46348

数据卷详情

数据卷详情

用法:

docker volume inspect [OPTIONS] VOLUME [VOLUME...]

Display detailed information on one or more volumes

Options:
  -f, --format string   使用自定义模板设置输出格式:
                        'json':             以JSON格式打印
                        'TEMPLATE':         使用给定的Go模板打印输出。
                        有关使用模板格式化输出的详细信息可参考  https://docs.docker.com/go/formatting/

实例:

# docker volume inspect 2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81
[
    {
        "CreatedAt": "2023-02-13T21:18:50+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81/_data",
        "Name": "2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81",
        "Options": null,
        "Scope": "local"
    }
]

创建数据卷

创建数据卷

用法:

docker volume create [OPTIONS] [VOLUME]

Create a volume

Options:
  -d, --driver string   指定卷驱动程序名称 (默认 "local")
      --label list      设置卷的元数据
  -o, --opt map         设置驱动程序特定选项 (default map[])

实例:

# docker volume ls
DRIVER    VOLUME NAME
local     2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81
local     3a85ab8091f7aba73a00c3dc241e5093543922e739fcb8cf6fd049c8bd59c470
local     3e1feef136cedbc252fb512418a981e05a920aac76ebb70af844487e7c0953ab
local     4cdd96211eb97533571ba475dd0c7487777febe96467373cafd2ecb66bbba48a
local     8eb47e03a2f58c5c7cd473da3b64fad22afb29b608507b90a71da55bca49c615
local     9f425b5967b5216ae85b0d8536901849afa1cd3110921a364dbfca0afc4c8551
local     98a50f3fc509baf28bd08cf8946c980ea77a89f4e3dd6d3dba0fd8eca7cf9bc4
local     a7b59c27547d2209ebe9e4ba1d1483371a2406c08fcc83f355a573d9765c5cf8
local     a096a932bb0ab60dcef010de19708584431e09071970b7243d356b08e131b861
local     be9615fcc00528f106b7620b44755d8a3329dfc5883d349340e01fcbcdedffb4
local     e075c52275f92e4aa3a38ba02f31d63d33bcb203d80d4290b26e763857d46348
# docker volume create myvolume
myvolume
# docker volume ls
DRIVER    VOLUME NAME
local     2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81
local     3a85ab8091f7aba73a00c3dc241e5093543922e739fcb8cf6fd049c8bd59c470
local     3e1feef136cedbc252fb512418a981e05a920aac76ebb70af844487e7c0953ab
local     4cdd96211eb97533571ba475dd0c7487777febe96467373cafd2ecb66bbba48a
local     8eb47e03a2f58c5c7cd473da3b64fad22afb29b608507b90a71da55bca49c615
local     9f425b5967b5216ae85b0d8536901849afa1cd3110921a364dbfca0afc4c8551
local     98a50f3fc509baf28bd08cf8946c980ea77a89f4e3dd6d3dba0fd8eca7cf9bc4
local     a7b59c27547d2209ebe9e4ba1d1483371a2406c08fcc83f355a573d9765c5cf8
local     a096a932bb0ab60dcef010de19708584431e09071970b7243d356b08e131b861
local     be9615fcc00528f106b7620b44755d8a3329dfc5883d349340e01fcbcdedffb4
local     e075c52275f92e4aa3a38ba02f31d63d33bcb203d80d4290b26e763857d46348
local     myvolume

删除数据卷

删除一个或多个卷。无法删除容器正在使用的卷。

用法:

docker volume rm [OPTIONS] VOLUME [VOLUME...]

Remove one or more volumes. You cannot remove a volume that is in use by a container.

Aliases:
  docker volume rm, docker volume remove

Examples:

$ docker volume rm hello
hello


Options:
  -f, --force   强制删除一个或多个卷

实例:

# docker volume ls
DRIVER    VOLUME NAME
local     2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81
local     3a85ab8091f7aba73a00c3dc241e5093543922e739fcb8cf6fd049c8bd59c470
local     3e1feef136cedbc252fb512418a981e05a920aac76ebb70af844487e7c0953ab
local     4cdd96211eb97533571ba475dd0c7487777febe96467373cafd2ecb66bbba48a
local     8eb47e03a2f58c5c7cd473da3b64fad22afb29b608507b90a71da55bca49c615
local     9f425b5967b5216ae85b0d8536901849afa1cd3110921a364dbfca0afc4c8551
local     98a50f3fc509baf28bd08cf8946c980ea77a89f4e3dd6d3dba0fd8eca7cf9bc4
local     a7b59c27547d2209ebe9e4ba1d1483371a2406c08fcc83f355a573d9765c5cf8
local     a096a932bb0ab60dcef010de19708584431e09071970b7243d356b08e131b861
local     be9615fcc00528f106b7620b44755d8a3329dfc5883d349340e01fcbcdedffb4
local     e075c52275f92e4aa3a38ba02f31d63d33bcb203d80d4290b26e763857d46348
local     myvolume
# docker volume rm myvolume 
myvolume
# docker volume ls
DRIVER    VOLUME NAME
local     2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81
local     3a85ab8091f7aba73a00c3dc241e5093543922e739fcb8cf6fd049c8bd59c470
local     3e1feef136cedbc252fb512418a981e05a920aac76ebb70af844487e7c0953ab
local     4cdd96211eb97533571ba475dd0c7487777febe96467373cafd2ecb66bbba48a
local     8eb47e03a2f58c5c7cd473da3b64fad22afb29b608507b90a71da55bca49c615
local     9f425b5967b5216ae85b0d8536901849afa1cd3110921a364dbfca0afc4c8551
local     98a50f3fc509baf28bd08cf8946c980ea77a89f4e3dd6d3dba0fd8eca7cf9bc4
local     a7b59c27547d2209ebe9e4ba1d1483371a2406c08fcc83f355a573d9765c5cf8
local     a096a932bb0ab60dcef010de19708584431e09071970b7243d356b08e131b861
local     be9615fcc00528f106b7620b44755d8a3329dfc5883d349340e01fcbcdedffb4
local     e075c52275f92e4aa3a38ba02f31d63d33bcb203d80d4290b26e763857d46348

清空未使用

删除所有未使用的本地卷

用法:

docker volume prune [OPTIONS]

Remove all unused local volumes

Options:
      --filter filter   提供过滤器值 (例如 "label=<label>")
  -f, --force           不提示确认

实例:

# docker volume ls
DRIVER    VOLUME NAME
local     2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81
local     3a85ab8091f7aba73a00c3dc241e5093543922e739fcb8cf6fd049c8bd59c470
local     3e1feef136cedbc252fb512418a981e05a920aac76ebb70af844487e7c0953ab
local     4cdd96211eb97533571ba475dd0c7487777febe96467373cafd2ecb66bbba48a
local     8eb47e03a2f58c5c7cd473da3b64fad22afb29b608507b90a71da55bca49c615
local     9f425b5967b5216ae85b0d8536901849afa1cd3110921a364dbfca0afc4c8551
local     98a50f3fc509baf28bd08cf8946c980ea77a89f4e3dd6d3dba0fd8eca7cf9bc4
local     a7b59c27547d2209ebe9e4ba1d1483371a2406c08fcc83f355a573d9765c5cf8
local     a096a932bb0ab60dcef010de19708584431e09071970b7243d356b08e131b861
local     be9615fcc00528f106b7620b44755d8a3329dfc5883d349340e01fcbcdedffb4
local     e075c52275f92e4aa3a38ba02f31d63d33bcb203d80d4290b26e763857d46348
local     myvolume
# docker volume prune -f
myvolume
# docker volume ls
DRIVER    VOLUME NAME
local     2ccfcac08d9dc387b4e015db3f9b250c4c072f0b16aaadf54cf88d147887cc81
local     3a85ab8091f7aba73a00c3dc241e5093543922e739fcb8cf6fd049c8bd59c470
local     3e1feef136cedbc252fb512418a981e05a920aac76ebb70af844487e7c0953ab
local     4cdd96211eb97533571ba475dd0c7487777febe96467373cafd2ecb66bbba48a
local     8eb47e03a2f58c5c7cd473da3b64fad22afb29b608507b90a71da55bca49c615
local     9f425b5967b5216ae85b0d8536901849afa1cd3110921a364dbfca0afc4c8551
local     98a50f3fc509baf28bd08cf8946c980ea77a89f4e3dd6d3dba0fd8eca7cf9bc4
local     a7b59c27547d2209ebe9e4ba1d1483371a2406c08fcc83f355a573d9765c5cf8
local     a096a932bb0ab60dcef010de19708584431e09071970b7243d356b08e131b861
local     be9615fcc00528f106b7620b44755d8a3329dfc5883d349340e01fcbcdedffb4
local     e075c52275f92e4aa3a38ba02f31d63d33bcb203d80d4290b26e763857d46348

DockerFile