大家好,欢迎来到IT知识分享网。
dockers-系统学习
一、dockers是什么?
- 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,也可以实现虚拟化,然后发布到任何流行的Linux机器上。
- 基于 Go 语言实现
- 完全使用沙箱机制,相互之间不会有任何接口连接,互相隔离
- 性能开销极低。
- 解决软件跨环境迁移问题。通过利用Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。
二、架构图
2.1、镜像(Image)
- 相当于是一个 root 文件系统
2.2、容器(Container)
- 镜像和容器的关系,就像是java中的类和对象一样,通过镜像创建容器
1.1. 镜像(类)是静态的定义
1.2. 容器(实例化电源线)是镜像运行时的实体。
- 容器可以通过命令进行各种操作,如创建、启动、停止、删除、暂停等。
2.3、仓库(Repository)
- 保存镜像的一个控制中心
三、 docker容器虚拟化 与 传统虚拟机比较
四、 docker安装
4.1、yum 包更新到最新
- yum update
(期间要选择确认,输入 y 即可)
4.2、安装需要的软件包
- yum install -y yum-utils
- yum install -y device-mapper-persistent-data
- yum install -y lvm2
4.3、设置yum源
- yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
4.4、安装docker
- yum install -y docker-ce
4.5、查看docker版本,验证是否验证成功
- docker -v
五、 镜像加速
- 从docker hub(https://hub.docker.com/)上下载docker镜像,太慢配置镜像加速器加快镜像下载速度
5.1、 创建daemon.json
- sudo mkdir -p /etc/docker
- sudo vim /etc/docker/daemon.json
{ "registry-mirrors": [ "http://hub-mirror.c.163.com", "https://fsqbo5wy.mirror.aliyuncs.com", "https://registry.docker-cn.com" ] }
5.2、重新启动服务
- sudo systemctl daemon-reload
- sudo systemctl restart docker
六、 进程相关命令
6.1、 启动docker
- systemctl start docker
6.2、 停止docker
- systemctl stop docker
6.3、查看docker状态
- systemctl restart docker
- systemctl status docker
6.4、重启docker
- systemctl status docker
6.5、设置开机启动docker服务,避免关机重启忘记启动服务
- systemctl enable docker
七、 镜像相关命令
7.1、查看本地所有的镜像
- docker images
1. REPOSITORY:镜像仓库 2. TAG:版本号 3. IMAGE ID:镜像ID 4. CREATED:镜像创建时间 5. SIZE:镜像大小
7.2、查看所用镜像的id
- docker images -q
7.3、搜索镜像:从网络中查找需要的镜像
- docker search 镜像名称
7.4、拉取镜像:从Docker仓库下载镜像到本地
- docker pull 镜像名称:版本号
- 如果版本号不指定则是最新的版本
7.5、删除指定本地镜像
- docker rmi 镜像id
7.6、删除所有本地镜像,(项目环境禁止使用)
- docker rmi ‘docker images -q’
八、容器相关命令
8.1、创建并启动容器
1. docker run 参数
例如: docker run -it --name redis redis:latest /bin/bash 或: docker run -id --name redis redis:latest /bin/bash 1. Docker以redis:latest 镜像创建一个新容器redis,然后在redis里执行/bin/bash命令 1. -it: 创建新容器并进入容器内部,当执行exit时,从容器内部退出,并关闭容器 2. -id:创建新容器并后台运行,不进入容器,需要使用docker exec 命令进入容器,退出后,容器不会关闭。
2. 进入容器命令:docker exec -it mysql1 /bin/bash
3. 参数说明
-i: 1. 保持容器运行。 2. 通常与 -t 同时使用。 1. 加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭 -t: 1. 为容器重新分配一个伪输入终端,通常与 -i 同时使用。 -d: 1. 以守护(后台)模式运行容器。 2. 创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。 --name: 1. 为创建的容器命名。 /bin/bash 1. 启动容器后要执行的命令 2. 不写也可以,默认是命令是/bin/bash -p:小写 主机端口:容器内部的端口 1. 主机端口(6376)映射到容器内部的6379端口 例如: docker run -id --name redis2 -p 6376:6379 redis:latest /bin/bash -P:大写 容器端口 随机映射 主机端口 --restart: 重启策略 redis:latest 指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker就会从镜像仓库下载公共镜像。
4. 查看正在运行的容器
1. docker ps 2. 运行状态: created(已创建) restarting(重启中) running 或 Up(运行中) removing(迁移中) paused(暂停) exited(停止) dead(死亡) PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
5. 停止容器
- docker stop 容器名称
6. 启动容器
- docker start 容器名称
7. 删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除
- docker rm 容器名称1 容器名称2 容器名称3
8. 查看容器日志
- docker logs container-name/container-id
例如:docker logs 0414ba6c2442
9.查看容器信息
- docker inspect 容器名称
[ { "Id": "0414ba6cbcb04456d72659fd6976b5a5423e253c07b0fd4", "Created": "2021-04-22T23:53:15.Z", "Path": "docker-entrypoint.sh", "Args": [ "/bin/bash" ], "State": { "Status": "exited", "Running": false, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 0, "ExitCode": 0, "Error": "", "StartedAt": "2021-04-23T00:23:43.0Z", "FinishedAt": "2021-04-23T00:28:33.Z" }, "Image": "sha256:739b59b96069d2edfa60f66b5efb4960eccbb2ac5fd1c9351e", "ResolvConfPath": "/var/lib/docker/containers/0414ba6cbcb04456d72659fd6976b5a5423e253c07b0fd4/resolv.conf", "HostnamePath": "/var/lib/docker/containers/0414ba6cbcb04456d72659fd6976b5a5423e253c07b0fd4/hostname", "HostsPath": "/var/lib/docker/containers/0414ba6cbcb04456d72659fd6976b5a5423e253c07b0fd4/hosts", "LogPath": "/var/lib/docker/containers/0414ba6cbcb04456d72659fd6976b5a5423e253c07b0fd4/0414ba6cbcb04456d72659fd6976b5a5423e253c07b0fd4-json.log", "Name": "/redis", "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": , "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/dd377db7626ebf5716b65b800dfbba5cd582f6f749b9243e3a49fa3c3cc46e06-init/diff:/var/lib/docker/overlay2/7735fe503e3a1ce62348a702b7bca627ba73aa0e06934c57b9fcea4dfa/diff:/var/lib/docker/overlay2/84942e998e650f22b9b8c0da635bc3dc1a1856a8f70c14ae49fa429ff33e9c77/diff:/var/lib/docker/overlay2/2ca53404c7adce969e66c73ccb00f17ad88938d3e81549d42a9d17cf9f27afc3/diff:/var/lib/docker/overlay2/c78bfd87ad4175b3bd91c7bc6ddc53d7dbbc5386a7ea58b4e9bbc/diff:/var/lib/docker/overlay2/c11b35fea6a73fffa0da20175d4e89b5ed37382aa61ceaa54c4af038/diff:/var/lib/docker/overlay2/9aa0e8fc33072b8fa6f4a3c6cb89221da26d08da12ca12056ad9590/diff", "MergedDir": "/var/lib/docker/overlay2/dd377db7626ebf5716b65b800dfbba5cd582f6f749b9243e3a49fa3c3cc46e06/merged", "UpperDir": "/var/lib/docker/overlay2/dd377db7626ebf5716b65b800dfbba5cd582f6f749b9243e3a49fa3c3cc46e06/diff", "WorkDir": "/var/lib/docker/overlay2/dd377db7626ebf5716b65b800dfbba5cd582f6f749b9243e3a49fa3c3cc46e06/work" }, "Name": "overlay2" }, "Mounts": [ { "Type": "volume", "Name": "f44072f02d1e71ff6cfddf940ee675b68139ca0fa3d", "Source": "/var/lib/docker/volumes/f44072f02d1e71ff6cfddf940ee675b68139ca0fa3d/_data", "Destination": "/data", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ], "Config": { "Hostname": "0414ba6c2442", "Domainname": "", "User": "", "AttachStdin": true, "AttachStdout": true, "AttachStderr": true, "ExposedPorts": { "6379/tcp": {} }, "Tty": true, "OpenStdin": true, "StdinOnce": true, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "GOSU_VERSION=1.12", "REDIS_VERSION=6.2.2", "REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.2.tar.gz", "REDIS_DOWNLOAD_SHA=7a260bb74860f1b88c3d5942bf8ba60ca59f121c6dce42d3017bed6add0b9535" ], "Cmd": [ "/bin/bash" ], "Image": "redis:latest", "Volumes": { "/data": {} }, "WorkingDir": "/data", "Entrypoint": [ "docker-entrypoint.sh" ], "OnBuild": null, "Labels": {} }, "NetworkSettings": { "Bridge": "", "SandboxID": "09b23f36838f8d36a20afde6ce128bc0366f5c8bb87b0d423", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": {}, "SandboxKey": "/var/run/docker/netns/09b23f36838f", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "MacAddress": "", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "06fabd9f48ff063682f36525c7355fe517e7025d50cd87637ef011bdf", "EndpointID": "", "Gateway": "", "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "", "DriverOpts": null } } } } ]
https://blog.csdn.net/zhou/article/details/
https://blog.csdn.net/zhou/article/details/
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126392.html