Docker学习

Docker介绍

docker是基于go语言的云开源技术。

在开发人员开发实现之后,运维人员部署我的项目,这两头可能会因为环境和跑配置让我的项目跑不起来。

比方我买了一条鱼,店家给我,我回家本人搞鱼缸,本人搞水。最初这条鱼很可能因为环境不适合死掉。

那么正确的做法是,店家把鱼原来生存的鱼缸,水和鱼一起给我,我间接放在家里即可。鱼不会因为环境和配置而死掉。

以前的形式叫搬家,当初通过doker的形式叫搬楼。

其实Docker是放大版的Linux,只有Linux的内核,硬件什么的不须要,共用宿主机的就好。所以Docker很小。

Docker三大技术

镜像 容器 仓库

类 实例

仓库是寄存镜像的中央,一个镜像能够有好多容器。(不晓得对不对)

docker是简易版的linux,大部分linux命令在docker外面都能够运行。

Ubuntu装置docker

# step 1: 装置必要的一些零碎工具sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common# step 2: 装置GPG证书curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# Step 3: 写入软件源信息sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"# Step 4: 更新并装置 Docker-CEsudo apt-get -y updatesudo apt-get -y install docker-ce在Linux文档中。

Docker常用命令

帮忙命令

docker version docker info   //这个信息更加具体docker --help  //能够查看其它所有命令的阐明

镜像命令

列出本地主机镜像
decker images docker images -a  #列出所有的本地镜像 docker images -q  #只显示镜像ID docker images -qa #显示所有的镜像IDdocker images --digests :显示镜像的摘要信息docker images --no-trunc :显示残缺的镜像信息docker images --digests  --no-trunc  显示的是更加具体的信息

搜寻某个镜像
docker search 某个XXX镜像的名字docker search tomcat #是在dockerhub下面搜寻,然而下载是在阿里云下面下载docker search -s 30 tomcat #意思是星星超过30再列举 这个命令很有用的docker search -s 30 --no-trunc tomcat #星星超过30 同时显示残缺的镜像形容

最下面两个,OFFICIAL 意思是官方版的。

这个搜寻进去的和在dockerhub下面搜寻进去的是一样的,看星星都一样

拉取某个镜像 下载镜像
docker pull  某个XXX镜像的名字docker pull tomcat 等价于 docker pull tomcat:latest
删除某个镜像
docker rmi  某个XXX镜像的名字docker rmi -f hello-workd 强制删除一个docker rmi -f hello-world nginx 删除多个

间接删除的话,删不掉,能够强制删除。加 -f

容器命令

最神奇的中央就是docker能够拉取centos镜像。 虚拟机啊外面搞了个docker,而后下面有搞了个linux。俄罗斯套娃的感觉。

操作之前先创立一个镜像
docker pull centos
新建启动容器

有了镜像才有容器。

docker run -it 470671670cac  docker run -it --name="docker-centos" centos 指定它的名字docker run -it --name dockercentos centos  这样也是指定名字 和上一个差不多

这样的话,就真的进入了centos外面,好神奇。

列出正在运行的容器
docker ps 查看docker外面的过程

ctrl + p +q 退出容器,然而不结再按docker ps 就能够看到当初运行的容器

status 上面的up 就是正在运行

 docker ps -n 2 刚刚运行的两个容器

退出容器
exit 退出容器进行ctrl + p + q 退出容器不进行
启动容器
docker start 1897847b3d7e (容器ID或者容器名)

重启容器
docker restart 容器ID或者容器名
进行容器
docker stop 容器ID或者容器名
强制进行容器
docker kill 容器ID或者容器名

用容器进行命令,尽管停啦。然而这个容器还是在的

能够用docker ps -n 2 还是能够看到已经开启的容器。

删除曾经进行的容器
docker rm 容器ID#如果删除没有进行的容器docker rm -f 容器ID
高级命令
启动守护式容器
docker run -d 容器名
查看容器日志
docker logs -f -t --tail 3 4addd748ced6 
查看容器内过程
docker top 容器ID

查看容器外部细节
docker inspect 容器ID

返回后果是一对json串

[    {        "Id": "4addd748ced617782a4c30885709467675b3955fb89add05e036e25321e096c0",        "Created": "2020-06-04T06:15:25.404566676Z",        "Path": "/bin/sh",        "Args": [            "-c",            "while true;do echo hello zzyy;sleep 2;done"        ],        "State": {            "Status": "running",            "Running": true,            "Paused": false,            "Restarting": false,            "OOMKilled": false,            "Dead": false,            "Pid": 7903,            "ExitCode": 0,            "Error": "",            "StartedAt": "2020-06-04T06:15:28.285487056Z",            "FinishedAt": "0001-01-01T00:00:00Z"        },        "Image": "sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee",        "ResolvConfPath": "/var/lib/docker/containers/4addd748ced617782a4c30885709467675b3955fb89add05e036e25321e096c0/resolv.conf",        "HostnamePath": "/var/lib/docker/containers/4addd748ced617782a4c30885709467675b3955fb89add05e036e25321e096c0/hostname",        "HostsPath": "/var/lib/docker/containers/4addd748ced617782a4c30885709467675b3955fb89add05e036e25321e096c0/hosts",        "LogPath": "/var/lib/docker/containers/4addd748ced617782a4c30885709467675b3955fb89add05e036e25321e096c0/4addd748ced617782a4c30885709467675b3955fb89add05e036e25321e096c0-json.log",        "Name": "/relaxed_hypatia",        "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": {},            "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/7bb758dbf8a0d7c5395a220706aa1dd7ba46ad5a65ad0ff7ae32890f6ca18e27-init/diff:/var/lib/docker/overlay2/878c448d416b98c84747a7fe0e9d142d6c0547bffee5b8f920d6926d606011a7/diff",                "MergedDir": "/var/lib/docker/overlay2/7bb758dbf8a0d7c5395a220706aa1dd7ba46ad5a65ad0ff7ae32890f6ca18e27/merged",                "UpperDir": "/var/lib/docker/overlay2/7bb758dbf8a0d7c5395a220706aa1dd7ba46ad5a65ad0ff7ae32890f6ca18e27/diff",                "WorkDir": "/var/lib/docker/overlay2/7bb758dbf8a0d7c5395a220706aa1dd7ba46ad5a65ad0ff7ae32890f6ca18e27/work"            },            "Name": "overlay2"        },        "Mounts": [],        "Config": {            "Hostname": "4addd748ced6",            "Domainname": "",            "User": "",            "AttachStdin": false,            "AttachStdout": false,            "AttachStderr": false,            "Tty": false,            "OpenStdin": false,            "StdinOnce": false,            "Env": [                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"            ],            "Cmd": [                "/bin/sh",                "-c",                "while true;do echo hello zzyy;sleep 2;done"            ],            "Image": "centos",            "Volumes": null,            "WorkingDir": "",            "Entrypoint": null,            "OnBuild": null,            "Labels": {                "org.label-schema.build-date": "20200114",                "org.label-schema.license": "GPLv2",                "org.label-schema.name": "CentOS Base Image",                "org.label-schema.schema-version": "1.0",                "org.label-schema.vendor": "CentOS",                "org.opencontainers.image.created": "2020-01-14 00:00:00-08:00",                "org.opencontainers.image.licenses": "GPL-2.0-only",                "org.opencontainers.image.title": "CentOS Base Image",                "org.opencontainers.image.vendor": "CentOS"            }        },        "NetworkSettings": {            "Bridge": "",            "SandboxID": "e9b863c6b05b8c8dec325db0225ac6d3e9b7210d9cd4cfa503fb54debf7f2036",            "HairpinMode": false,            "LinkLocalIPv6Address": "",            "LinkLocalIPv6PrefixLen": 0,            "Ports": {},            "SandboxKey": "/var/run/docker/netns/e9b863c6b05b",            "SecondaryIPAddresses": null,            "SecondaryIPv6Addresses": null,            "EndpointID": "3583c8d997bba16b236b00489acb0332add54b90b7ee2157ae5bda26b3e20b66",            "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": "5c68d397ff8ac11416d1652c68d0ecb9fb72b9bfc31b27c5599887e57da42d13",                    "EndpointID": "3583c8d997bba16b236b00489acb0332add54b90b7ee2157ae5bda26b3e20b66",                    "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 attach 容器ID

ctrl + p + q 退出当前

从新进去:

docker exec -it 031924a7c4db /bin/bash  #这个是进tomcat的目录 docker exec -t 8414499180e9 ls -l /tmp 这种形式也能够 

只是这种形式事实上并没有进入

相似于隔山打牛的操作,操作完并没有停留在docker的centos中,而是在外边

将容器内文件拷贝到主机上
docker cp  容器ID:容器内门路 目标主机门路docker cp 容器ID:/tmp/yml.log /root 将容器中tmp下的文件拷贝到 /root目录下事实上,yml.log如同是centos下的文件,Ubuntu上面是没有的。//比方将nacos中sql文件拷到宿主机根目录docker cp nacos:/home/nacos/conf/schema.sql ///容器内门路是什么,还是须要进容器外面看一下。pwd命令
本文由博客一文多发平台 OpenWrite 公布!