云原生 | Docker - [常用命令]

§0 官网文档连接

Docker 官网命令行指令文档 连接
Docker 官网接口文档 连接

§1 docker 服务指令

docker 服务相关指令其实就是 systemctl / services(centos6) 指令

  • 启动 docker 服务

    systemctl start docker
    
  • 停止 docker 服务

    systemctl stop docker
    
  • 重启 docker 服务

    systemctl restart docker
    
  • 查看 docker 服务状态

    systemctl statusdocker
    
  • 开机自启 docker 服务

    systemctl enable docker
    

§2 docker 帮助指令

  • 查看概要信息

    docker info
    
  • 查看帮助文档

    docker --help
    
  • 查看指令帮助文档

    docker [commond] --help
    

§3 镜像指令

§3.1 查看本地镜像列表( docker images )
docker images

在这里插入图片描述

字段说明
REPOSITORY:镜像仓库源
TAG:镜像标签,同一个仓库源中可能有多个标签,相当于版本,若不指定,默认使用 lastest 版
IMAGE ID:镜像 ID
CREATED:镜像创建时间
SIZE:镜像大小

参数说明

  • -a 列表本地所有镜像
  • -f 筛选
  • -q 只显示镜像 id
§3.2 查找镜像( docker search )
docker search image_name

在这里插入图片描述

字段说明
NAME:镜像名
DESCRIPTION:镜像描述
STARS:星数,相当于点赞
OFFICIAL:是否是官方镜像
AUTOMATED:是否自动构建

参数说明

  • --limit n,只查看前 n 个查询结果

    docker search redis --limit 3
    
§3.3 拉取镜像( docker pull )
docker pull image_name
docker pull image_name:TAG

TAG 是镜像的版本号,省略默认使用最新版,即 image_name:lastest

§3.4 查看空间( docker system df )
docker system df

在这里插入图片描述

字段说明
TYPE:docker 对象类型

  • Images:镜像
  • Containers:容器
  • Local volumes:本地卷
  • Build Cache:缓存

TOTAL:总数
ACTIVE:运行数量
SIZE:大小
RECLAIMABVLE:可回收的大小和百分比,正在被使用的无法回收

§3.5 删除镜像( docker rmi )
docker rmi 仓库名 / 镜像 id

可以批量删除,多个仓库名或镜像 id 之间用空格间隔
镜像删除前必须停止由它启动的容器
镜像可以强制删除,需使用参数 -f

参数说明
-f 强制删除

§3.6 裁剪镜像( docker image prune )
docker image prune

裁剪镜像可以一次性清除所有虚悬镜像

虚悬镜像
虚悬镜像(danglign image) 仓库(REPOSITORY)和标签(TAG)都是 <none> 的镜像
虚悬镜像通常是构建或删除镜像时出现错误导致的,通常需要删除
还可以使用下面命令删除虚悬镜像

docker rmi $(docker images -q -f dangling=true)
§3.7 镜像的导入( docker import )

参考 容器的导入

§3.8 镜像的提交( docker import )

参考 提交新镜像

§3.9 镜像的构建( docker build)
docker build [OPTIONS] (PATH | URL | -)

使用 Dockerfile 构建镜像
可以指定 Dockerfile 的路径、url 或 省略

参数说明

  • -t 指定 仓库/镜像名:TAG

§4 容器指令

§4.1 运行容器( docker run )
docker run 镜像名

参数说明

  • --name
    重命名容器

  • -d ( detach,分离 )
    后台(守护式)运行 容器并返回容器 ID

  • -i ( interactive,交互式的 )
    交互式运行容器

  • -t ( tty )
    为容器分配模拟终端

  • -p ( port )
    指定 端口映射
    参数格式 主机端口:容器端口

    -p 5000:5000
    

    可以同时指定多个

    -p 5000:5000 -p 6000:6000
    
  • -P
    随机端口映射

  • -v ( volum )
    挂载 数据卷
    参数格式 主机挂载路径:容器路径

    -v /docker_registry:/tmp/registry
    

    可以同时指定多个

    -v /docker/redis/6.0.8/conf/redis.conf:/etc/redis/redis.conf \
    -v /app/redis/6.0.8/data:/data
    

    通常配合参数 --privileged=true打开数据卷权限

  • --privileged
    是否获取主机 root 权限
    值为 true 时容器内路径获得容器所在主机的 root 用户的权限

  • --restart
    指定容器的重启策略

    • no
      不重启,默认
    • on-failure
      失败重启,只在容器非正常退出时(退出状态非0)才会重启容器
      此策略可以指定最大重启次数,比如 --restart=on-failure:5 (最多重启 5 次)
    • unless-stopped
      停止时无尽,在容器退出时总是重启容器
      但 Docker 守护进程启动时就已经停止了的容器不重启
    • always
      总是,在容器退出时总是重启容器
§4.2 查看容器( docker ps )
docker ps

参数说明

  • 无参数
    查看当前正在运行的容器

  • -a
    查看所有容器

  • -l
    查看最近创建的容器

  • -n
    查看最近创建的 n 个容器

  • -q
    查看容器 id

§4.3 退出容器( exit )
exit

使用 exit 命令退出容器,容器会停止
详情查看 docker 容器的退出机制

§4.4 启动容器( docker start )
docker start 容器 id / 容器名

需要容器已经存在

§4.5 重启容器( docker restart )
docker restart 容器 id / 容器名

需要容器已经存在

§4.6 停止容器( docker stop)
docker stop 容器 id / 容器名

需要容器已经存在

§4.7 强制停止容器( docker kill )
docker kill 容器 id / 容器名

需要容器已经存在

§4.8 删除容器( docker rm )
docker rm 容器 id / 容器名

参数说明

  • 无参数
    删除已存在并且已停止的容器

  • -f
    强制删除容器

示例
删除所有运行的容器

docker rm -f $(docker ps -a -q)

删除所有状态为 exited 的容器

docker rm $(docker ps -qf status=exited)
§4.9 查看容器日志( docker logs )
docker logs 容器 id 
§4.10 查看容器内进程( docker top )
docker top 容器 id 
§4.11 查看容器内部细节( docker inspect )
docker inspect 容器 id 

输出类似

[
    {
        "Id": "cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e",
        "Created": "2022-08-09T07:36:23.165295141Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "redis-server"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 37511,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-08-09T07:36:23.971877345Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631",
        "ResolvConfPath": "/var/lib/docker/containers/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e/hostname",
        "HostsPath": "/var/lib/docker/containers/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e/hosts",
        "LogPath": "/var/lib/docker/containers/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e-json.log",
        "Name": "/intelligent_turing",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "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",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "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/bd6044bb08219fb4f973d4bfb4a9d6cfe0d973b6084b326db5eacbbe751bf383-init/diff:/var/lib/docker/overlay2/74e7276324c4944736e8b7afcddf427eeb7baabb370192d23e3187ef46eb073e/diff:/var/lib/docker/overlay2/0139b73183f9009e54c44743e53898fa7cf170d7c1ab31a6c04018f47c6c4e31/diff:/var/lib/docker/overlay2/d268b7e9669ecacaea6c964753f2e2dea4cb181e6d68796ff0b05eb80c9793ec/diff:/var/lib/docker/overlay2/0e5908be525c58ffc9f23c6468ee2ea34a0c3578bbf1409d91e25c3d381a1225/diff:/var/lib/docker/overlay2/1f621f01d512b031485da9d30cbb80423fc92f5b4f4e4475ff1382000f7e95af/diff:/var/lib/docker/overlay2/ef0e10883d6f6fb6afad6010781dde4ef75b0f6997cf30b37cd0468705457b9d/diff",
                "MergedDir": "/var/lib/docker/overlay2/bd6044bb08219fb4f973d4bfb4a9d6cfe0d973b6084b326db5eacbbe751bf383/merged",
                "UpperDir": "/var/lib/docker/overlay2/bd6044bb08219fb4f973d4bfb4a9d6cfe0d973b6084b326db5eacbbe751bf383/diff",
                "WorkDir": "/var/lib/docker/overlay2/bd6044bb08219fb4f973d4bfb4a9d6cfe0d973b6084b326db5eacbbe751bf383/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "b06a421968771e3003bcc414dd1a3efe30b742782d32232f512533b65d6e8ac7",
                "Source": "/var/lib/docker/volumes/b06a421968771e3003bcc414dd1a3efe30b742782d32232f512533b65d6e8ac7/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "cf426c231d50",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "6379/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.12",
                "REDIS_VERSION=6.2.6",
                "REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.6.tar.gz",
                "REDIS_DOWNLOAD_SHA=5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab"
            ],
            "Cmd": [
                "redis-server"
            ],
            "Image": "redis",
            "Volumes": {
                "/data": {}
            },
            "WorkingDir": "/data",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "6f9b8573f20c11c0864d7cd878cca8267c9176ca94b86c1006aadd64e1db582d",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "6379/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/6f9b8573f20c",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "b87e27785ed39d7c6f161e0837f9119b9d3f8b7f59cd7471ef3399d3b23036db",
            "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": "238a5418d55eff5243394b05575a46f36b1dbeecf201b8b656d13a8646d47667",
                    "EndpointID": "b87e27785ed39d7c6f161e0837f9119b9d3f8b7f59cd7471ef3399d3b23036db",
                    "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
                }
            }
        }
    }
]

字段说明

  • Mounts
    挂载信息
§4.12 进入运行中的容器( docker exec )
docker exec 容器 id 

参数说明

  • 无参数
    进入运行中的容器
  • -it
    进入运行中的容器,并以打开新的终端以交互

与 docker attache 区别

  • exec 会用新进程打开新的终端以交互
  • exec 下使用 exit 退出不会终止容器
  • docker attache 下使用 exit 会终止容器,一般不在正式工作场景使用

示例
进入运行中的 ubuntu 容器,并以新的 bash 命令行终端交互

docker exec -it ubuntu /bin/bash
§4.13 进入运行中的容器( docker attache )
docker attache 容器 id 

示例
容器 b7bb2cf0efd5 下根目录的 a 文件,复制到主机根目录

docker cp b7bb2cf0efd5:/a /

在这里插入图片描述

§4.14 容器内文件复制到主机( docker cp )
docker cp 容器 id:容器内路径 主机目录
§4.15 容器的导出( docker export)
docker export 容器 id > 文件名

导出的容器会形成 tar 文件

参数说明

  • -o
    输出字符串,容器导出后输出的文件的路径和名字
    可以用 “> 文件名” 代替
    不指定时输出到 STDOUT,但可能报

    cowardly refusing to save to a terminal. Use the -o flag or redirect
    

示例
容器 b7bb2cf0efd5 导出为 1123.tar 和 1124.tar

docker export b7bb2cf0efd5 > 1123.tar
docker export -o 1124.tar  b7bb2cf0efd5 

§4.16 容器的导入( docker import )

先读取容器导出的文件,然后交由 docker import 导入

cat tar文件 | docker import - 库名/镜像名:TAG 
  • 导入后会形成一个具有指定 库名、镜像名和TAG 的新的 镜像
  • 使用新镜像 docker run 完成容器的导入
  • 导入的容器会带有原容器导出时的所有文件

示例
用 1124.tar 导入镜像

cat 1124.tar| docker import - ubuntu/ubuntu:1.0

在这里插入图片描述

§4.17 从容器提交副本( docker push )

参考 提交新镜像

§5 docker 仓库指令

§5.1 提交新镜像( docker commit )
docker commit 容器 ID 新镜像名:新镜像标签

参数说明

  • -m
    对新镜像的描述
  • -a
    新镜像的作者

示例
基于基本的 ubuntu 安装 vim 并提交新镜像

更新 apt

apt-get update

安装 vim

apt-get -y install vim

在这里插入图片描述

§5.2 推送镜像到仓库( docker push )
docker push 仓库标签

流程和示例
使用公有云仓库
需要先准备公有云仓库,可参考 创建阿里云仓库
可以参考 阿里云仓库相关指令 从目的仓库的基本信息中快速获取指令模板

登录

docker login --username=用户名  仓库

创建仓库标签

docker tag 镜像id registry.cn-hangzhou.aliyuncs.com/命名空间名/仓库名:镜像版本号

推送

docker push 仓库标签

示例
在这里插入图片描述

使用私有仓库
需要先准备私有仓库,可参考 创建私有仓库

创建仓库标签

docker tag 镜像:TAG 私有仓库IP:私有仓库端口/仓库名:TAG

推送

docker push 仓库标签

示例
在这里插入图片描述

§5.3 从仓库拉取镜像( docker pull )
docker pull 仓库标签

流程和示例
使用公有云仓库
需要先具备目的仓库,可参考 创建阿里云仓库
可以参考 阿里云仓库相关指令 从目的仓库的基本信息中快速获取指令模板

登录

docker login --username=用户名  仓库

拉取

docker pull registry.cn-hangzhou.aliyuncs.com/fc-learning/ubuntu:镜像版本号

使用私有仓库
需要先准备私有仓库,可参考 创建私有仓库

拉取

docker pull 私有仓库IP:私有仓库端口/仓库名:TAG
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值