docker 教程【持续更新】

镜像命令

docker images 查看本地主机全部镜像信息

[root@iZ2dklwe9xll8lZ /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   2 months ago   13.3kB

REPOSITORY	# 镜像的仓库源
TAG			# 镜像的标签
IMAGE ID	# 镜像的id
CREATED		# 镜像的创建时间
SIZE		# 镜像的大小

Options:
  -a, --all             Show all images (default hides intermediate images)
  # 列出全部镜像
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show image IDs
  # 只显示镜像的id

docker search 搜索镜像

# 搜索 mysql 镜像
[root@iZ2dklwe9xll8lZ /]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10940     [OK]
...

Options:
  -f, --filter filter   Filter output based on conditions provided
  # 过滤,例如:docker search mysql --filter=STARS=10000
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output

# 过滤 STARS 小于 10000 的数据
[root@iZ2dklwe9xll8lZ /]# docker search mysql --filter=STARS=10000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10940     [OK]

docker pull 拉取镜像

# 拉取镜像
docker pull mysql:[tag]

[root@iZ2dklwe9xll8lZ /]# docker pull mysql
Using default tag: latest 	# 不加tag则拉取最后一个版本
latest: Pulling from library/mysql 	# 分层下载
69692152171a: Pull complete
1651b0be3df3: Pull complete
951da7386bc8: Pull complete
0f86c95aa242: Pull complete
37ba2d8bd4fe: Pull complete
6d278bb05e94: Pull complete
497efbd93a3e: Pull complete
f7fddf10c2c2: Pull complete
16415d159dfb: Pull complete
0e530ffc6b73: Pull complete
b0a4a1a77178: Pull complete
cd90f92aa9ef: Pull complete
Digest: sha256:d50098d7fcb25b1fcb24e2d3247cae3fc55815d64fec640dc395840f8fa80969
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址

# 下面两个命令等价
docker pull mysql
docker pull docker.io/library/mysql:latest

# 拉取指定版本
docker pull mysql:5.7 #版本号不能乱写,不知道就去官网查询一下。

[root@iZ2dklwe9xll8lZ /]# docker pull mysql:5.7
5.7: Pulling from library/mysql
69692152171a: Already exists	# 镜像共用,上面已经下载了,这里提示存在就不会在下载了。
1651b0be3df3: Already exists
951da7386bc8: Already exists
0f86c95aa242: Already exists
37ba2d8bd4fe: Already exists
6d278bb05e94: Already exists
497efbd93a3e: Already exists
a023ae82eef5: Pull complete
e76c35f20ee7: Pull complete
e887524d2ef9: Pull complete
ccb65627e1c3: Pull complete
Digest: sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

docker rmi 删除镜像

Options:
  -f, --force      Force removal of the image
  # 全部删除
      --no-prune   Do not delete untagged parents

# 可以通过镜像源或镜像id进行删除,这里是通过镜像id进行删除的。
[root@iZ2dklwe9xll8lZ /]# docker rmi -f c0cdc95609f1
Untagged: mysql:latest
Untagged: mysql@sha256:d50098d7fcb25b1fcb24e2d3247cae3fc55815d64fec640dc395840f8fa80969
Deleted: sha256:c0cdc95609f1fc1daf2c7cae05ebd6adcf7b5c614b4f424949554a24012e3c09
Deleted: sha256:137bebc5ea278e61127e13cc7312fd83874cd19e392ee87252b532f0162fbd56
Deleted: sha256:7ed0de2ad4e43c97f58fa9e81fba73700167ef9f8a9970685059e0109749a56b
Deleted: sha256:9375660fbff871cd29c86b8643be60e376bfc96e99a3d7e8f93d74cd61500705
Deleted: sha256:d8a47065d005ac34d81017677330ce096eb5562eeb971e2db12b0e200fdb1cb6
Deleted: sha256:ca13c8ad9df5d824d5a259a927eaa6c04a60f022bc2abe8fc7866cf4b2b366f4

# 删除全部的镜像
[root@iZ2dklwe9xll8lZ /]# docker rmi -f $(docker images -aq
Untagged: mysql:5.7
Untagged: mysql@sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa
Deleted: sha256:2c9028880e5814e8923c278d7e2059f9066d56608a21cd3f83a01e3337bacd68
Deleted: sha256:c49c5c776f1bc87cdfff451ef39ce16a1ef45829e10203f4d9a153a6889ec15e
Deleted: sha256:8345316eca77700e62470611446529113579712a787d356e5c8656a41c244aee
Deleted: sha256:8ae51b87111404bd3e3bde4115ea2fe3fd2bb2cf67158460423c361a24df156b
Deleted: sha256:9d5afda6f6dcf8dd59aef5c02099f1d3b3b0c9ae4f2bb7a61627613e8cdfe562
Deleted: sha256:7af1865d5c19316c3dc0829a2ee2b3a744ae756f7fec9c213d3afc5f1f6ed306
Deleted: sha256:f205c8f3c8aaa6376442b34c0c2062738461d37e0aa16ba021cd7e09c67213c2
Deleted: sha256:d690e8a8242cf13cbe98c5b2faffdd0fc7e6c4c13425b5da31de991aa1f89a76
Deleted: sha256:24efeee958e9f3d859fe15540e9296d5aaa6d3eb3b5f5494a2e8370608a4cfaa
Deleted: sha256:654f2ffede3bb536fd62d04c9c7b7826e890828bec92182634e38684959b2498
Deleted: sha256:de478a06eaa676052e665faa0b07d86a007f4b87cf82eb46a258742dc2d32260
Deleted: sha256:02c055ef67f5904019f43a41ea5f099996d8e7633749b6e606c400526b2c4b33
Untagged: hello-world:latest
Untagged: hello-world@sha256:5122f6204b6a3596e048758cabba3c46b1c937a46b5be6225b835d091b90e46c
Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726

# 参数讲解:
docker rmi -f $( docker images -aq
docker iamges -aq# 列表全部镜像的id,把结果作为参数传递。
$(...)# 用作与传递参数

# 总结
docker rmi -f 镜像id # 删除一个镜像
docker rmi -f 镜像id 镜像id 镜像id # 删除多个镜像
docker rmi -f $(docker images -aq# 删除全部镜像
容器命令

创建容器的前提条件是必须有镜像,容器是根据镜像来创建的。

新建容器并启动

docker run [可选参数] images

# 常用参数说明
--name="Name"	# 容器名称,该名称由自己定义,目的是用于区分容器。
-d				# 后台方式运行
-it				# 使用交互方式运行,方便进入容器查看内容。
-p(小写)		   # 指定容器端口 -p 8080:8080
        -p # ip:主机端口:容器端口
        -p # 主机端口:容器端口(常用)
        -p # 容器端口
        容器端口 # 指定指定端口
-P(大写)			# 随机指定端口

# 运行容器
docker run -d -it centos /bin/bash

docker ps 列出所有运行的容器

# 参数
docker ps # 列出当前正在运行的容器
docker ps -a # 列出全部运行和运行过的容器
docker ps -n # 设置显示数量
docker ps -q # 只显示容器的id

# 列出当前正在运行的容器
[root@iZ2dklwe9xll8lZ /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
402612da63da   centos    "/bin/bash"   26 seconds ago   Up 25 seconds             musing_nobel

# 列出全部运行和运行过的容器
[root@iZ2dklwe9xll8lZ /]# docker ps -a
CONTAINER ID   IMAGE         COMMAND          CREATED             STATUS                         PORTS     NAMES
402612da63da   centos        "/bin/bash"      2 minutes ago       Up 2 minutes                             musing_nobel
1e125042a197   centos        "/bin/bash -d"   3 minutes ago       Exited (2) 3 minutes ago                 gallant_sutherland
16e572b8f807   centos        "-d"             4 minutes ago       Created                                  serene_khorana
d177a69aecc6   centos        "/bin/bash"      6 minutes ago       Exited (0) 5 minutes ago                 ppppp
a9ba01c48cca   centos        "/bin/bash"      8 minutes ago       Exited (127) 6 minutes ago               agitated_fermat
1db137146423   hello-world   "/hello"         About an hour ago   Exited (0) About an hour ago             vibrant_thompson
d6605f4aed4a   hello-world   "/hello"         2 days ago          Exited (0) 2 days ago                    epic_poitras
5902c0b1016b   hello-world   "/hello"         2 days ago          Exited (0) 2 days ago                    eloquent_goldberg

# 列表全部运行和运行过的容器并只显示一个结果
[root@iZ2dklwe9xll8lZ /]# docker ps -a -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
402612da63da   centos    "/bin/bash"   6 minutes ago   Up 6 minutes             musing_nobel

# 列出全部运行和运行过的容器并只显示id
[root@iZ2dklwe9xll8lZ /]# docker ps -aq
402612da63da
1e125042a197
16e572b8f807
d177a69aecc6
a9ba01c48cca
1db137146423
d6605f4aed4a
5902c0b1016b

退出容器

exit 	# 直接退出容器并退出
Ctrl + P + Q # 容器不停止退出,退出以后容器会继续运行。

删除容器

docker rm 容器id	#删除指定容器,无法删除正在运行中的容器,如需强制删除使用 -f,例:docker rm -f 容器id
docker rm -f $(docker ps -aq) # 删除全部容器

# 通过管道删除全部容器
docker ps -a -q|xargs docker rm

容器的启动与停止

# 启动一个未运行的容器
docker start 容器id

# 重启容器
docker restrt 容器id

# 停止容器
docker stop

# 强制停止容器
docker kill
常用其他命令

进入容器

# 开启一个新的进程进入容器
docker exec -it 容器id /bin/bash

# 不会打开新的进程,直接进入到当前容器进程
docker attach 容器id

查看容器日志

docker logs 容器id

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g.
                       2013-01-02T13:23:37Z) or relative (e.g. 42m for 42
                       minutes)
  -n, --tail string    Number of lines to show from the end of the logs
                       (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g.
                       2013-01-02T13:23:37Z) or relative (e.g. 42m for 42
                       minutes)
# 查看最近10日志
docker logs -t -f -n 10 容器id
	-t 显示时间长
	-f 实时输出
	-n 显示条数

查看容器进程

docker top 容器id

# 输出信息
UID                 PID                 PPID                C                   STIME               TTY
TIME                CMD
root                3198                3171                0                   15:05               ?
00:00:00            /bin/sh -c while true;do echo ...; sleep 1;done
root                3355                3198                0                   15:07               ?
00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

UID		# 执行用户
PID		# 进程ID
PPID	# 父进程ID
C		# 命令

查看容器信息

docker inspect 容器id
[
    {
        "Id": "a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943", // 容器id
        "Created": "2021-06-05T14:58:35.6733124Z",
        "Path": "/bin/sh", //控制台
        "Args": [ // 当前执行的参数
            "-c",
            "while true;do echo ...; sleep 1;done"
        ],
        "State": {
            "Status": "running", // 运行状态
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 3569, // 进程id
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-06-05T15:09:53.9363926Z",
            "FinishedAt": "2021-06-05T15:09:49.8179335Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55", // 镜像id
        "ResolvConfPath": "/var/lib/docker/containers/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943/hostname",
        "HostsPath": "/var/lib/docker/containers/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943/hosts",
        "LogPath": "/var/lib/docker/containers/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943-json.log",
        "Name": "/hungry_payne",
        "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": [
                30,
                120
            ],
            "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/21c28bef37f1344781a4b9bb58c5386fabdd837f764eaf9a2602179d2d4d4484-init/diff:/var/lib/docker/overlay2/791f65e1368f8cbb9524475a11d5f8f26096cb1138be94e7f51f3d2928d24543/diff",
                "MergedDir": "/var/lib/docker/overlay2/21c28bef37f1344781a4b9bb58c5386fabdd837f764eaf9a2602179d2d4d4484/merged",
                "UpperDir": "/var/lib/docker/overlay2/21c28bef37f1344781a4b9bb58c5386fabdd837f764eaf9a2602179d2d4d4484/diff",
                "WorkDir": "/var/lib/docker/overlay2/21c28bef37f1344781a4b9bb58c5386fabdd837f764eaf9a2602179d2d4d4484/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "a7287e4fa845",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "while true;do echo ...; sleep 1;done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20201204",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "45eb006e27ddfefccfef176c0e1494475439fe17a260ab07c22d2104c2a4e307",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/45eb006e27dd",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "2b9f689ea061b0a6da2cf39a4951e9e2f45746c4094617551d7fd8bfee5ad8c0",
            "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": "6a941e3b17b42fd8812ec525ba08c88f06e2206bcc8c30fe0e2e08ae419f9ed0",
                    "EndpointID": "2b9f689ea061b0a6da2cf39a4951e9e2f45746c4094617551d7fd8bfee5ad8c0",
                    "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
                }
            }
        }
    }
]

从容器中复制文件到主机

# 小提示: 就算容器未运行也能执行cp命令,因为容器文件是存在的。

docker cp 容器id:容器文件路径 主机文件路径

示例

docker cp 57f240fb1f74:/home/admin/index.html c:/home/admin
# 注:我这里是使用的windows系统
# 把文件复制到了c:/home/admin目录下面,因为没输入文件名所以默认就算复制的文件名,也可以输入文件名
docker cp 57f240fb1f74:/home/admin/index.html c:/home/admin/new.html

从主机中复制文件到容器

docker cp 主机文件路径 容器id:容器文件路径

示例

docker cp C:\home\admin\inde.hml 57f240fb1f74:/home/admin/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值