赞
踩
参考官网:https://docs.docker.com/engine/reference/commandline/cli/
启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
设置开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker总体帮助文档: docker --help
docker images
OPTIONS说明:
-a :列出本地所有的镜像(含历史映像层)
-q :只显示镜像ID。
各个表头参数说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号 不指定显示最新的(latest)一个版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
从远程仓库搜索某个镜像
OPTIONS说明:
–limit : 只列出N个镜像,默认25个
如:docker search --limit 5 redis
各个表头参数说明:
docker pull redis
没有指定tag默认下载最新版,等价于
docker pull redis:latest
docker system df
docker rmi -f 镜像ID
若使用docker rmi 镜像ID 提示该镜像被容器ef9abec1f025 使用,无法被删除
添加–force 或-f 表示强制删除该镜像
docker rmi -f 镜像名1 镜像名2
docker rmi -f $(docker images -qa)
将docker images -qa 传递给 docker rmi -f 命令
docker images -qa表示获取全部镜像ID
有镜像才能创建容器,这是根本前提
docker pull centos
docker pull ubuntu
centos(大约200M)占用内存比ubuntu(大约73M)大, 这里使用ubuntu镜像,
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS说明(常用):
注意有些是一个减号,有些是两个减号
–name=“容器新名字” 为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互);
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
docker run -it ubuntu /bin/bash
参数说明:
-i: 交互式操作。
-t: 终端。
-it:以交互模式启动一个容器,
ubuntu : ubuntu 镜像。
/bin/bash:表示在容器内部打开bash终端,用户可以在终端上执行命令和查看容器内部文件系统。放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:
在大部分的场景下,我们希望 docker 的服务是在后台运行的,
我们可以过 -d 指定容器的后台运行模式。
docker run -d ubuntu
使用docker ps -a 进行查看, 会发现容器已经退出
很重要的要说明的一点: Docker容器如果想要在后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,
我们配置启动服务只需要启动响应的service即可。例如service nginx start
但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,
这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,
常见就是交互式操作模式,表示我还有交互操作,别中断
以redis为例后台运行
docker run -d redis
以redis为例
docker run -it redis
对于redis、mysql这些应用,我们一般采用后台守护式启动
docker ps [OPTIONS]
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
1 exit
run启动容器,exit退出,容器停止
2 ctrl+p+q
run启动容器,ctrl+p+q退出,容器不停止
docker start 93ec18a9b1b6
docker restart 93ec18a9b1b6
docker stop 93ec18a9b1b6
docker kill 2f48b8d19c03
启动的容器不允许删除,先停止容器,再进行删除
或者强制删除
docker rm -f 4ac88c73b274
将docker ps -a -q返回的结果传递给docker rmi -f 命令
docker rm -f $(docker ps -a -q)
将docker ps -a -q 作为参数xargs 执行命令
docker ps -a -q | xargs docker rm
docker logs 0335b4a3cbae
docker top 0335b4a3cbae
docker inspect命令用于查看Docker对象的详细信息。它可以查看容器、镜像、网络等各种对象的详细信息,包括配置、状态、网络等方面的信息。
[root@dongguo ~]# docker inspect 0335b4a3cbae
[
{
"Id": "0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77",
"Created": "2023-06-23T21:00:17.885426188Z",
"Path": "docker-entrypoint.sh",
"Args": [
"redis-server"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 15258,
"ExitCode": 0,
"Error": "",
"StartedAt": "2023-06-23T21:00:18.045267761Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631",
"ResolvConfPath": "/var/lib/docker/containers/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77/hostname",
"HostsPath": "/var/lib/docker/containers/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77/hosts",
"LogPath": "/var/lib/docker/containers/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77/0335b4a3cbae05bfd4c03a19b471f2e320a759ae02bd58f82f2f81c062a30f77-json.log",
"Name": "/festive_ride",
"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,
"ConsoleSize": [
34,
131
],
"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/1ca531c9fe50499d3bea2948a29f0e2fae0c4ef27efeb1e7d92a965b67d0af71-init/diff:/var/lib/docker/overlay2/0cb171a5403987a76a8cf3a670b85f01fd6b4b3e3605c4452fdb07fe52e77b9c/diff:/var/lib/docker/overlay2/441e4c82f35c47524d53beaf146cc3b22abf42d59ec31f9687cc586b7dfd051c/diff:/var/lib/docker/overlay2/7a5e7e57e9aba2dcfd758fc0866e9af6dbb3111327544069e6be9d539f970ec3/diff:/var/lib/docker/overlay2/1db4ca7e11010350ad63f9f302f037911ab42e12247946e0610bae41292d40e6/diff:/var/lib/docker/overlay2/23cfa44bd9728c6ea5686c0136196b3328520705d7078a7aa75be3b8401521e3/diff:/var/lib/docker/overlay2/929c534593b838115d695073b935dc877e1c371009ea4274f14b593022f95195/diff",
"MergedDir": "/var/lib/docker/overlay2/1ca531c9fe50499d3bea2948a29f0e2fae0c4ef27efeb1e7d92a965b67d0af71/merged",
"UpperDir": "/var/lib/docker/overlay2/1ca531c9fe50499d3bea2948a29f0e2fae0c4ef27efeb1e7d92a965b67d0af71/diff",
"WorkDir": "/var/lib/docker/overlay2/1ca531c9fe50499d3bea2948a29f0e2fae0c4ef27efeb1e7d92a965b67d0af71/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "volume",
"Name": "a564bb56e5f355f39526203c2d0c2ccc9ad7cdb3eec883fd73c5b2f3d36f87ac",
"Source": "/var/lib/docker/volumes/a564bb56e5f355f39526203c2d0c2ccc9ad7cdb3eec883fd73c5b2f3d36f87ac/_data",
"Destination": "/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "0335b4a3cbae",
"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": "eb1f015b5514625fd0f01ba5d92a4dfe66a9275b85c89f487976675b02134276",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"6379/tcp": null
},
"SandboxKey": "/var/run/docker/netns/eb1f015b5514",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "1f6670fa68e2627489a004f8cb78c367ddb260b6e8fd379f25a3fc4c070c4775",
"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": "f3d2dc5a51080f517a978680b82469bb72ee261900f9ab0665d58ea1a28b95d8",
"EndpointID": "1f6670fa68e2627489a004f8cb78c367ddb260b6e8fd379f25a3fc4c070c4775",
"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 exec -it aaa14efee277 /bin/bash
1.运行ubuntu
开启一个新的会话,进入Ubuntu容器
ocker attach aaa14efee277
区别
exec 是在容器中打开新的终端,并且可以启动新的进程
用exit退出,不会导致容器的停止。
attach 直接进入容器启动命令的终端,不会启动新的进程
用exit退出,会导致容器的停止。
推荐使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。
docker cp 容器ID:容器内路径 目的主机路径
将/下的a.txt拷贝到/tmp目录下
docker cp aaa14efee277:/a.txt /tmp/a.txt
导出容器的内容留作为一个tar归档文件
从tar包中的内容创建一个新的文件系统再导入为镜像
cat /tmp/abc.tar | docker import - dongguo/ubuntu:latest
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。