docker官网:https://www.docker.com/
文档介绍:https://docs.docker.com/reference/
镜像(image):docker镜像就相当于一个模板,通过模板创建容器
容器(container):就是运行的环境,通过镜像创建
仓库(repository):镜像存放的地方
查看linux系统配置:# cat /etc/os-release
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认国外的库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #阿里云库
成功截图:
yum makecache fast
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker
docker version
docker run hello-world
docker images
删除依赖信息
yum remove docker-ce docker-ce-cli containerd.io
卸载资源
rm -rf /var/lib/docker
1、登录阿里云 找到容器镜像服务
2、找到镜像加速器
3、配置使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF‘ { "registry-mirrors": ["https://9kl56hae.mirror.aliyuncs.com"] } EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
参考地址:https://docs.docker.com/reference/
docker images
docker images --help -a, --all Show all images (default hides intermediate images) 所有镜像 -q, --quiet Only show numeric IDs 只显示id
docker search mysql
docker pull 镜像名 [tag版本]
# docker pull mysql Using default tag: latest 不写版本时 默认下载latest最新版本 latest: Pulling from library/mysql d121f8d1c412: Pull complete 分层下载 docker images的核心 联合文件系统 f3cebc0b4691: Pull complete 1862755a0b37: Pull complete 489b44f3dbb4: Pull complete 690874f836db: Pull complete baa8be383ffb: Pull complete 55356608b4ac: Pull complete dd35ceccb6eb: Pull complete 429b35712b19: Pull complete 162d8291095c: Pull complete 5e500ef7181b: Pull complete af7528e958b6: Pull complete Digest: sha256:e1bfe11693ed2052cb3b4e5fa356c65381129e87e38551c6cd6ec532ebe0e808 防真伪 签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest docker真实地址 docker pull mysql 等价于 docker pull docker.io/library/mysql:latest # docker pull mysql:5.7 5.7: Pulling from library/mysql d121f8d1c412: Already exists f3cebc0b4691: Already exists 1862755a0b37: Already exists 489b44f3dbb4: Already exists 690874f836db: Already exists baa8be383ffb: Already exists 55356608b4ac: Already exists 277d8f888368: Pull complete 只下载新的 21f2da6feb67: Pull complete 2c98f818bcb9: Pull complete 031b0a770162: Pull complete Digest: sha256:14fd47ec8724954b63d1a236d2299b8da25c9bbb8eacc739bb88038d82da4919 Status: Downloaded newer image for mysql:5.7 docker.io/library/mysql:5.7
docker rmi -f 容器id 删除单个容器 docker rmi -f 容器id 容器id 删除多个容器 docker rmi -f $(docker images -aq) 删除所有容器
# docker rmi REPOSITORY:TAG 方式删除
docker run 【可选参数】 image #参数说明 --name="Name" Name 容器名字 用来区分容器 -d 后台运行 -it 使用交互方式运行,可进入容器查看内容 -p 指定容器端口 -p 8080:8080 -p 主机端口:主机端口(常用) -P 随机指定端口 测试 #启动并进入容器 [root@MiWiFi-R4A-srv ~]# docker run -it centos /bin/bash [root@364002336de3 /]#
exit #退出容器并关闭容器 ctrl+P+Q #退出容器不停止运行
docker ps
#列出当前正在运行的容器
-a #列出当前正在运行的容器+历史运行的容器
-p #只显示容器的id
docker rm 容器id #删除指定容器 不能删除正在运行的容器, rm -f强制删除 docker rm -f $(docker ps -aq) #删除所有容器
docker start 容器id docker restart 容器id docker stop 容器id docker kill 容器id #强制停止当前容器
docker run -d # 后台运行命令 在前台必须有一个进程,不然无法运行 会自动杀死
docker logs -tf 容器id #查看所有日志 docker logs -tf --tail 10 容器id #查看十条日志
docker top 容器id [root@MiWiFi-R4A-srv ~]# docker top 88ad49298200 UID PID PPID C STIME TTY TIME CMD root 22751 22735 0 04:54 ? 00:00:00 /bin/bash
命令:
docker inspect 容器id
[root@MiWiFi-R4A-srv ~]# docker inspect 88ad49298200
[
{
"Id": "88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc",
"Created": "2020-09-17T08:54:37.806023362Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 22751,
"ExitCode": 0,
"Error": "",
"StartedAt": "2020-09-17T08:54:38.148480809Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566",
"ResolvConfPath": "/var/lib/docker/containers/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc/hostname",
"HostsPath": "/var/lib/docker/containers/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc/hosts",
"LogPath": "/var/lib/docker/containers/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc-json.log",
"Name": "/charming_gould",
"RestartCount": 0,
"Driver": "devicemapper",
"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,
"Capabilities": null,
"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": {
"DeviceId": "27",
"DeviceName": "docker-253:0-431582-94433450c6f551351a4373fdcf2c1ac6470f3915483c2845cb893ded046093e8",
"DeviceSize": "10737418240"
},
"Name": "devicemapper"
},
"Mounts": [],
"Config": {
"Hostname": "88ad49298200",
"Domainname": "",
"User": "",
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"Tty": true,
"OpenStdin": true,
"StdinOnce": true,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "centos",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20200809",
"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": "ec68d24408fb7209f9b4bcda28f6ba9ee4b086dbc8d911ef0b148b3a436700d1",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/ec68d24408fb",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "d27c20775e76bc7d513652c52fabe4083b81a3a3b0e3da5b7fae55ba1062f1b2",
"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": "083dcd542372f2ac8c5fe888c2950edc253f0ce05a15e6e41531c52f81d7ce61",
"EndpointID": "d27c20775e76bc7d513652c52fabe4083b81a3a3b0e3da5b7fae55ba1062f1b2",
"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 容器id /bin/bash 测试 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 51c69d615b7d centos "/bin/bash" 25 seconds ago Up 23 seconds hardcore_brattain [root@MiWiFi-R4A-srv ~]# docker exec -it 51c69d615b7d /bin/bash [root@51c69d615b7d /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var 方式二: # docker attach 容器id 进入容器执行命令 区别: docker exec -it 容器id /bin/bash 进入容器开启一个新的终端,可以在里边操作(常用) ocker attach 容器id 进入容器中正在执行的终端,不会启动新的进程
从容器/home文件夹中拷贝/text.java到本机home文件夹下
# docker cp 容器id:/home/text.java /home
[root@MiWiFi-R4A-srv ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 51c69d615b7d centos "/bin/bash" 4 minutes ago Up 4 minutes hardcore_brattain [root@MiWiFi-R4A-srv ~]# docker attach 51c69d615b7d [root@51c69d615b7d /]# ll bash: ll: command not found [root@51c69d615b7d /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@51c69d615b7d /]# cd /home/ [root@51c69d615b7d home]# ll bash: ll: command not found [root@51c69d615b7d home]# ls [root@51c69d615b7d home]# touch text.java [root@51c69d615b7d home]# ls text.java [root@51c69d615b7d home]# read escape sequence [root@MiWiFi-R4A-srv ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 51c69d615b7d centos "/bin/bash" 18 minutes ago Up 18 minutes hardcore_brattain [root@MiWiFi-R4A-srv ~]# docker cp 51c69d615b7d:/home/text.java /home [root@MiWiFi-R4A-srv ~]# cd /home/ [root@MiWiFi-R4A-srv home]# ls text.java
原文:https://www.cnblogs.com/wtx-lgz-2019-1207/p/13864169.html