2020系统综合实践 第2次实践作业

DockerFile保留字指令

FROM - 基础镜像
MAINTAINER - 镜像维护者的姓名和邮箱地址
RUN - 容器构建时需要运行的命令
EXPOSE - 当前容器对外暴露的端口
WORKDIR - 指定在创建容器后,终端默认登陆的工作目录,一个落脚点
ENV - 在构建镜像过程中设置环境变量
ADD - 将宿主机目录下的文件拷贝进镜像,且ADD命令会自动处理url和解压tar压缩包
COPY - 类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新一层镜像中内<目标路径>位置 COPY src dest
VOLUME - 容器数据卷,用于数据持久化工作
CMD - 指定容器启动时运行的命令。DockerFile中可以有多个CMD指令,但只有最后一个生效。CMD会被docker run之后的参数替换
ENTRYPOINT - 功能同CMD,但不会被docker run之后的参数替换
ONBUILD - 当构建一个被继承的Dockerfile时运行命令,父镜像被子继承后父镜像的ONBUILD被触发

(1) 实现一个自定义的web容器服务

  • 首先先pull一个nginx镜像

    ...一开局就ERROR,找了半天发现是虚拟机里面的网断了,在宿主机外面明明一切正常...好吧不是什么大问题接下去整

  • pull完成以后进行Dockerfile的编写

  • 使用Dockerfile创建镜像

  • 创建nginx容器 (这个图是后来截的 先不要问为什么最后镜像版本加到了4.0...)

  • 镜像创建成功了,试图访问,很尴尬...

  • 回头偷偷观察了大佬的博客,发现好像是没有配置nginx(目前确实不知道这个nginx是干啥用的),去nginx的镜像里找到配置文件偷出来改改

  • listen 监听端口值
  • root为Web默认目录
  • index访问容器时默认展示的页面
  • 并且重新修改一下Dockerfile

  • 查看最后创建的容器

  • 容器启动时,能直接进入web代码的存放目录

  • 浏览器访问localhost:8888结果

(2) 实现一个自定义的数据库容器服务

  • 编写Dockerfile

  • 编写setup.sh

  • 编写schema.sql

  • 编写privileges.sql

  • build镜像

  • 创建容器

  • 这时想进入容器,发现一进入容器就被停止,且容器的状态为Exited (1)

    查看一下意外停止容器的log,发现是sql语句有bug

    回去看一下,果然,vi操作不小心误删了creat的几个字母

  • 之后就是重新创建镜像,便可以成功进入容器了

  • 查询数据库

  • 查看容器配置信息 sudo docker inspect mymysql

[
    {
        "Id": "2a0256e221bb2fa2949502e867a2f5eee8b6e23bff0c76e4c1cb6ad2a486d192",
        "Created": "2020-04-24T11:04:56.484435569Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "sh",
            "/mysql/setup.sh"
        ],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 1,
            "Error": "",
            "StartedAt": "2020-04-24T11:04:57.631235815Z",
            "FinishedAt": "2020-04-24T11:05:14.898966618Z"
        },
        "Image": "sha256:ae64729587d7212f7fea35df12421208fa423f7c70a4402164bb519e3ffa2d16",
        "ResolvConfPath": "/var/lib/docker/containers/2a0256e221bb2fa2949502e867a2f5eee8b6e23bff0c76e4c1cb6ad2a486d192/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/2a0256e221bb2fa2949502e867a2f5eee8b6e23bff0c76e4c1cb6ad2a486d192/hostname",
        "HostsPath": "/var/lib/docker/containers/2a0256e221bb2fa2949502e867a2f5eee8b6e23bff0c76e4c1cb6ad2a486d192/hosts",
        "LogPath": "/var/lib/docker/containers/2a0256e221bb2fa2949502e867a2f5eee8b6e23bff0c76e4c1cb6ad2a486d192/2a0256e221bb2fa2949502e867a2f5eee8b6e23bff0c76e4c1cb6ad2a486d192-json.log",
        "Name": "/mymysql",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {
                "3306/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "3333"
                    }
                ]
            },
            "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": {
                "LowerDir": "/var/lib/docker/overlay2/9691f67e61f79a6600bb26f4bc69a6cb3601a6e44e1d9694e261f33b962ce932-init/diff:/var/lib/docker/overlay2/373d4329f58b6c22172f43aa91af70446bfb8c1498940a5a8db4e03bf6d278fe/diff:/var/lib/docker/overlay2/45350d35175580c7b678642430898a920f7f8ce7cd5689047d384f3ccdcf0cb5/diff:/var/lib/docker/overlay2/056f37030f481693a80f800e8645059e54e8ba69bee82ab067f87073f06c0553/diff:/var/lib/docker/overlay2/94a4986c082d8060bef252e2892a7d8f4d4520b063c0664866da1119183716a4/diff:/var/lib/docker/overlay2/d593795a1e8b0a66b14de3115598e03b5155010236558bf5b72b795dcc4f3783/diff:/var/lib/docker/overlay2/28d53c6d4e71291f4ece4b97f3fd90cdb3b91c38068cd091972252e43ac10bfe/diff:/var/lib/docker/overlay2/35d48d1b299c51aeeaac82ba99e9a3b96bce622795f86334c720c0856c467f40/diff:/var/lib/docker/overlay2/9df99226f39d12fbed7e9c0ee09faa4587d3366f00a1da4ba87433faa1f99bba/diff:/var/lib/docker/overlay2/61b1de8d5000a5e8a0f30bea000eaa5a2ef9f7d7d16c0282c38b1f77c338d20c/diff:/var/lib/docker/overlay2/a84dd14c07a529fb78214ba0d44f60f6db708b284b4b277226bcfc4057d938d3/diff:/var/lib/docker/overlay2/05b7f0faaf312c8e7191fcc28cad43e2c5b7c986a197bb89e11959b0613de5b4/diff:/var/lib/docker/overlay2/d71a845f793e052bc7cec07cca727dd8886df487ec6048d580033d3f14c1d95c/diff:/var/lib/docker/overlay2/10d3de9c66a6cd178966d1f9c0a6bfa26d9f3d576596643537f1abfbdf10f6f9/diff:/var/lib/docker/overlay2/22b7d43578df433267a6d31520b53f1e4aa7b6c232d0b741a83d252c470862aa/diff",
                "MergedDir": "/var/lib/docker/overlay2/9691f67e61f79a6600bb26f4bc69a6cb3601a6e44e1d9694e261f33b962ce932/merged",
                "UpperDir": "/var/lib/docker/overlay2/9691f67e61f79a6600bb26f4bc69a6cb3601a6e44e1d9694e261f33b962ce932/diff",
                "WorkDir": "/var/lib/docker/overlay2/9691f67e61f79a6600bb26f4bc69a6cb3601a6e44e1d9694e261f33b962ce932/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "0debce07d68242829e21568418f16610848550c0b95a4ca78eba8bffbd559443",
                "Source": "/var/lib/docker/volumes/0debce07d68242829e21568418f16610848550c0b95a4ca78eba8bffbd559443/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "2a0256e221bb",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {},
                "33060/tcp": {}
            },
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": false,
            "Env": [
                "MYSQL_ROOT_PASSWORD=123456",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.12",
                "MYSQL_MAJOR=5.7",
                "MYSQL_VERSION=5.7.29-1debian10",
                "MYSQL_ALLOW_EMPTY_PASSWORD=no"
            ],
            "Cmd": [
                "sh",
                "/mysql/setup.sh"
            ],
            "Image": "zxhmysql:1.0",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "813d6b4ff51a27bec670513ca53bb87f58460c03c5eb683f206e1e7e28507d55",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/813d6b4ff51a",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "b9b88cff7bd021fcf05069ad9c2a516b7e20d03ad238a6c8475c547fb80d6d1f",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]



心路历程

这次作业最难受的就是周一的时候docker搞到一半打翻了水杯电脑进了水🌊,赶紧关机去抢救就翘班鸽了几天,再上来的时候发现大佬都已经写好博客了,多了很多可以借鉴的地方,舒服。

posted @ 2020-04-24 19:54  Jamwong  阅读(238)  评论(0编辑  收藏  举报