dockers-系统学习

dockers-系统学习


一、dockers是什么?

  1. 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,也可以实现虚拟化,然后发布到任何流行的Linux机器上。

  2. 基于 Go 语言实现

  3. 完全使用沙箱机制,相互之间不会有任何接口连接,互相隔离

  4. 性能开销极低。

  5. 解决软件跨环境迁移问题。通过利用Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

二、架构图

在这里插入图片描述

2.1、镜像(Image)

  1. 相当于是一个 root 文件系统

2.2、容器(Container)

  1. 镜像和容器的关系,就像是java中的类和对象一样,通过镜像创建容器

    1.1. 镜像(类)是静态的定义

    1.2. 容器(实例化电源线)是镜像运行时的实体。

  2. 容器可以通过命令进行各种操作,如创建、启动、停止、删除、暂停等。

2.3、仓库(Repository)

  1. 保存镜像的一个控制中心

三、 docker容器虚拟化 与 传统虚拟机比较

在这里插入图片描述

四、 docker安装

4.1、yum 包更新到最新

  1. yum update

在这里插入图片描述
在这里插入图片描述

(期间要选择确认,输入 y 即可)

4.2、安装需要的软件包

在这里插入图片描述

  1. yum install -y yum-utils

  2. yum install -y device-mapper-persistent-data

  3. yum install -y lvm2

4.3、设置yum源

在这里插入图片描述

  1. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.4、安装docker

  1. yum install -y docker-ce

在这里插入图片描述

4.5、查看docker版本,验证是否验证成功

  1. docker -v

在这里插入图片描述

五、 镜像加速

  1. 从docker hub(https://hub.docker.com/)上下载docker镜像,太慢配置镜像加速器加快镜像下载速度

5.1、 创建daemon.json

  1. sudo mkdir -p /etc/docker

  2. 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、重新启动服务

  1. sudo systemctl daemon-reload

  2. sudo systemctl restart docker

六、 进程相关命令

6.1、 启动docker

在这里插入图片描述

  1. systemctl start docker

6.2、 停止docker

在这里插入图片描述

  1. systemctl stop docker

6.3、查看docker状态

在这里插入图片描述

  1. systemctl restart docker
  2. systemctl status docker

6.4、重启docker

  1. systemctl status docker

6.5、设置开机启动docker服务,避免关机重启忘记启动服务

在这里插入图片描述

  1. systemctl enable docker

七、 镜像相关命令

7.1、查看本地所有的镜像

  1. docker images

在这里插入图片描述

1. REPOSITORY:镜像仓库
2. TAG:版本号
3. IMAGE ID:镜像ID
4. CREATED:镜像创建时间
5. SIZE:镜像大小

7.2、查看所用镜像的id

  1. docker images -q

在这里插入图片描述

7.3、搜索镜像:从网络中查找需要的镜像

  1. docker search 镜像名称

在这里插入图片描述

7.4、拉取镜像:从Docker仓库下载镜像到本地

  1. docker pull 镜像名称:版本号

    1. 如果版本号不指定则是最新的版本

在这里插入图片描述

7.5、删除指定本地镜像

  1. docker rmi 镜像id

在这里插入图片描述

7.6、删除所有本地镜像,(项目环境禁止使用)

  1. 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. 停止容器

  1. docker stop 容器名称

6. 启动容器

  1. docker start 容器名称

7. 删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除

  1. docker rm 容器名称1 容器名称2 容器名称3

在这里插入图片描述

8. 查看容器日志

  1. docker logs container-name/container-id

    例如:docker logs 0414ba6c2442

9.查看容器信息

  1. docker inspect 容器名称

在这里插入图片描述

[
    {
        "Id": "0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4",
        "Created": "2021-04-22T23:53:15.289784249Z",
        "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.036719956Z",
            "FinishedAt": "2021-04-23T00:28:33.983807032Z"
        },
        "Image": "sha256:739b59b96069d2edfa60f66b5efb4960e7129053ccbb2ac5fd1c9351e7731918",
        "ResolvConfPath": "/var/lib/docker/containers/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4/hostname",
        "HostsPath": "/var/lib/docker/containers/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4/hosts",
        "LogPath": "/var/lib/docker/containers/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4-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": 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/dd377db7626ebf5716b65b800dfbba5cd582f6f749b9243e3a49fa3c3cc46e06-init/diff:/var/lib/docker/overlay2/7735fe503e3a1ce62348a702b7bca627b999359a73aa0e06934c57b9fcea4dfa/diff:/var/lib/docker/overlay2/84942e998e650f22b9b8c0da635bc3dc1a1856a8f70c14ae49fa429ff33e9c77/diff:/var/lib/docker/overlay2/2ca53404c7adce969e66c73ccb00f17ad88938d3e81549d42a9d17cf9f27afc3/diff:/var/lib/docker/overlay2/c78bfd87ad4175b3bd91c7bc6ddc53d7dbbc5386a7e18897309996a58b4e9bbc/diff:/var/lib/docker/overlay2/c11b35fea6a73fff25181444a0da20175d4e89b5ed37382aa61ceaa54c4af038/diff:/var/lib/docker/overlay2/9aa0e8fc33072b8fa6f4a3c6cb89221da26d08d179704067a12ca12056ad9590/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": "f44072f02d1e71ff6cfddf940e483607e675b68139ca0182119218f556398a3d",
                "Source": "/var/lib/docker/volumes/f44072f02d1e71ff6cfddf940e483607e675b68139ca0182119218f556398a3d/_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": "09b23f36838f8d36a20a87049082fde6ce128bc0366f5c8b2441926b87b0d423",
            "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": "06fabd9f48f3659273f063682f36525c7355fe517e7025d50cd87637ef011bdf",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]

转载:
https://blog.csdn.net/zhou920786312/article/details/115607439

https://blog.csdn.net/zhou920786312/article/details/115607535

https://blog.csdn.net/zhou920786312/article/details/115607644

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值