Docker基础学习

  • Post author:
  • Post category:其他

Docker定义:

Docker是一个开源的应用容器引擎,让开发者可以打爆他们的应用和依赖到一个可移植的镜像中,然后发布到Linux上,也可以实现虚拟化,容器完全使用沙箱机制,相互之间不会有任何接口。

Docker架构

Docker采用 C/S架构,服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。

Docker和虚拟机的对比

1、虚拟机是虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件;docker是直接运行在宿主内部,所以更轻便;
2、docker更快的交互和部署;
3、docker更便捷的升级和扩缩容;
4、docker更高效的系统资源的利用;
5、docker更方便的应用;
在这里插入图片描述
在这里插入图片描述

Dcoker名词

镜像(images)

docker镜像就好比一个个模板,可以通过这个模板来创建容器服务,一个镜像可以创建多个容器;

容器(container)

  • docker利用容器技术,独立运行一个或者一组应用,可以通过镜像来创建的;
  • 可以通过启动、停止、删除等基础命令来操作容器

仓库(repository)

存放镜像的地方,像docker hub、阿里云等;

Docker常用命令

在这里插入图片描述

帮助命令

docker version	# docker版本信息
docker info		# 系统级别的信息,包括镜像和容器的数量
docker 命令 --help
docker version	# docker版本信息
Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:46:54 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:45:28 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
docker info		# 系统级别的信息,包括docker安装路径、镜像和容器的数量
Client:
 Debug Mode: false

Server:
 Containers: 16
  Running: 12
  Paused: 0
  Stopped: 4
 Images: 35
 Server Version: 19.03.12
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
 runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.18.0-193.6.3.el8_2.x86_64
 Operating System: CentOS Linux 8 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 3.664GiB
 Name: MiWiFi-CR8808-srv
 ID: 5TRA:BXOQ:JERU:A6SP:Q7NV:N3HK:VEC7:FYMS:CD4U:TNM7:MLEH:BYZI
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://cctt315o.mirror.aliyuncs.com/
 Live Restore Enabled: false

WARNING: API is accessible on http://0.0.0.0:2375 without encryption.
         Access to the remote API is equivalent to root access on the host. Refer
         to the 'Docker daemon attack surface' section in the documentation for
         more information: https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface

镜像命令

查看本地镜像

[root@192 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              f35646e83998        11 days ago         133MB
kibana              7.9.2               ba296c26886a        4 weeks ago         1.18GB
elasticsearch       7.9.2               caa7a21ca06e        4 weeks ago         763MB

# 解释
REPOSITORY		# 镜像的仓库
TAG				# 镜像的标签
IMAGE ID		# 镜像的ID
CREATED			# 镜像的创建时间
SIZE			# 镜像的大小

# 可选项
--all , -a		# 列出所有镜像
--quiet , -q	# 只显示镜像的id

镜像查找

[root@192 ~]# docker search tomcat
NAME                          DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   2861                [OK]                
tomee                         Apache TomEE is an all-Apache Java EE certif…   83                  [OK]                
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   55                                      [OK]
bitnami/tomcat                Bitnami Tomcat Docker Image                     36                                      [OK]
kubeguide/tomcat-app          Tomcat image for Chapter 1                      29                                      
consol/tomcat-7.0             Tomcat 7.0.57, 8080, "admin/admin"              17                                      [OK]
cloudesire/tomcat             Tomcat server, 6/7/8                            15                                      [OK]
aallam/tomcat-mysql           Debian, Oracle JDK, Tomcat & MySQL              13                                      [OK]
arm32v7/tomcat                Apache Tomcat is an open source implementati…   10                                      
maluuba/tomcat7-java8         Tomcat7 with java8.                             6                                       
rightctrl/tomcat              CentOS , Oracle Java, tomcat application ssl…   6                                       [OK]
unidata/tomcat-docker         Security-hardened Tomcat Docker container.      4                                       [OK]
arm64v8/tomcat                Apache Tomcat is an open source implementati…   2                                       
jelastic/tomcat               An image of the Tomcat Java application serv…   2                                       
amd64/tomcat                  Apache Tomcat is an open source implementati…   2                                       
cfje/tomcat-resource          Tomcat Concourse Resource                       1                                       
99taxis/tomcat7               Tomcat7                                         1                                       [OK]
camptocamp/tomcat-logback     Docker image for tomcat with logback integra…   1                                       [OK]
chenyufeng/tomcat-centos      tomcat基于centos6的镜像                              1                                       [OK]
ppc64le/tomcat                Apache Tomcat is an open source implementati…   1                                       
oobsri/tomcat8                Testing CI Jobs with different names.           1                                       
picoded/tomcat7               tomcat7 with jre8 and MANAGER_USER / MANAGER…   0                                       [OK]
secoresearch/tomcat-varnish   Tomcat and Varnish 5.0                          0                                       [OK]
s390x/tomcat                  Apache Tomcat is an open source implementati…   0                                       
softwareplant/tomcat          Tomcat images for jira-cloud testing            0                                       [OK]

# 解释
NAME		     # 镜像的名称
DESCRIPTION 	 # 镜像的描述
STARS		     # 点赞次数
OFFICIAL         # 是否是官方的
AUTOMATED	     # 镜像是否自动构建


# 可选项
--filter=STARS=3000		# 搜素出来的镜像就是STARS大于3000的

也可以在Docker Hub上去查找镜像
在这里插入图片描述

镜像下载

docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
e4c3d3e4f7b0: Pull complete 
101c41d0463b: Pull complete 
8275efcd805f: Pull complete 
751620502a7a: Pull complete 
a59da3a7d0e7: Pull complete 
9c0f1dffe039: Pull complete 
474314d81831: Pull complete 
90ee5d998c5c: Pull complete 
6b11f2f89cd1: Pull complete 
9eac66e32ef5: Pull complete 
Digest: sha256:30dd6da4bc6b290da345cd8a90212f358b6a094f6197a59fe7f2ba9b8a261b4f
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest

#镜像名称后不添加标签,默认去找 镜像名:latest去下载

也可以指定标签去下载镜像

[root@192 ~]# docker pull tomcat:8.0
8.0: Pulling from library/tomcat
f189db1b88b3: Already exists 
3d06cf2f1b5e: Pull complete 
edd0da9e3091: Pull complete 
eb7768aae14e: Pull complete 
e2780f585e0f: Pull complete 
e5ed720afeba: Pull complete 
d9e134700cfc: Pull complete 
e4804b33d02a: Pull complete 
b9df0c24315e: Pull complete 
49fdae8eaa20: Pull complete 
1aea3d9a32e6: Pull complete 
Digest: sha256:8ecb10948deb32c34aeadf7bf95d12a93fbd3527911fa629c1a3e7823b89ce6f
Status: Downloaded newer image for tomcat:8.0
docker.io/library/tomcat:8.0

镜像删除

指定镜像id去删除镜像

[root@192 ~]# docker rmi 164feebb86e8
Untagged: zookeeper:latest
Untagged: zookeeper@sha256:f26850e8cdae0f105d8ff87e09087c2bec21874524b3cc887844762950eab73a
Deleted: sha256:164feebb86e83d92eac21db211061dea9748abd3841fd328224c79ff515ba44d
Deleted: sha256:fbc2ec8b27667d561137e32b8aecaae7de16a7f1e26678aa2f107e0536705206
Deleted: sha256:bc470d185fbadce352002b22e8f2b65cbfe528a3fc62a3ea182930978eb407d9
Deleted: sha256:d3f73b8e0043cbebac6d15882f8209250642c67c1283c3f52e57136c8a58fe24
Deleted: sha256:cb12a3bcc21747557f508b5e08093915972461621ba430dcd40ce88211d4127d
Deleted: sha256:e1c43ecbb7bb142d753752d793073168b0db96531c824d6441aa7cc61727884f
Deleted: sha256:08ac5449213247795c170b774867931c548ff27036520a2a0793ee6a03fa491c
Deleted: sha256:e47aeb6e542620774a5364aff59e1593a8131532980b7dda9c772bfc04979678
Deleted: sha256:13cb14c2acd34e45446a50af25cb05095a17624678dbafbcc9e26086547c1d74

也可以通过镜像名称去批量删除镜像

[root@192 ~]# docker rmi $(docker images tomcat -q)
Untagged: tomcat:9.0
Untagged: tomcat@sha256:30dd6da4bc6b290da345cd8a90212f358b6a094f6197a59fe7f2ba9b8a261b4f
Deleted: sha256:625b734f984e48718bb88230d7ec046a58598ae2bf729a748857a4c0ced1ad9a
Deleted: sha256:3a2e7997aebfd7360dc259f937c53dcef2e8847fe84411578a9d9550724ec8ed
Deleted: sha256:3b94d9209fc0317bca055efa96d768792e8a517c9a4719bf0794f9393f37454b
Deleted: sha256:a988412ec2522ca19883ff5440ceb58b36eb3c6af2c800a05dd35edfb745a2b5
Deleted: sha256:80adec6e939accfe13106a93c0397d1262e953dc7b5167e678607b21eb3c19ab
Deleted: sha256:0db19116eb16c14c458329cde016e5a79be829d052cec7fedf3bd0bca78aad93
Deleted: sha256:3383e45b22b2b665b1a2604e375c1e7dc007c540e77d6367b1d7ba79ef0030d8
Deleted: sha256:d5d618196ec30fcdba1d210f135b4911b9dbdc79fdd729a9a9c3683a6a9b9308
Deleted: sha256:4bb57adf9037e4da45f2dbc0f84a7e9d8da6847bef3e63d09c8a9d8465f4d2c6
Deleted: sha256:5173011923d00f0fe606ecceda93ea88f17dc77e0b026df802c9aeb31bc1eac6
Deleted: sha256:9780f6d83e45878749497a6297ed9906c19ee0cc48cc88dc63827564bb8768fd
Untagged: tomcat:8.0
Untagged: tomcat@sha256:8ecb10948deb32c34aeadf7bf95d12a93fbd3527911fa629c1a3e7823b89ce6f
Deleted: sha256:ef6a7c98d192507d6066dcf24e44bec66d07ec9cf7c55d8d3d1ea0a24660bdef
Deleted: sha256:6dc5bbd9ede58ce52f6e9d34eaac4e3bf1fbb3014e9eae344677bf3c2f022a17
Deleted: sha256:6f22c12dcf0ac783b0b00471e38262c708761a677e6a847a57a5d7cce2cbc7f1
Deleted: sha256:dbefc7cd29b21d99c136d6234ca442cdb89fc91f3c91ef6c1d333d37424d2f44
Deleted: sha256:d65396dbf112285c9d395bb33c2eb2f776cd9b959c007152c10a2f25fbf1c198
Deleted: sha256:5b8a875f80bdd2e9f9cf2c0852243e0cb59ea7be5e92620b2c2089800bb18594
Deleted: sha256:d97b31b9ca51e024a895e2f6fa032224fb73ba2a070149499ce87306ed9d7af6
Deleted: sha256:3717c4f05493340d97d982bc6ed8cba98869833918de23c78c39414788dd08c1
Deleted: sha256:b9c326fb510188d2958888aee970ae93925c2a2ad8a78b2ec3a521747ee3ec4f
Deleted: sha256:8cc193ff8a5b4837eab54bee27418daadad8825f13b8fab55229b4954fee6f9f
Deleted: sha256:b1852f6f3f85863ed849af673e566ad8de76dac4d2c6526d791e965978c1ce62

当镜像出现如下reids的状态时tag ,镜像为dangling images;

[root@192 conf]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              f35646e83998        13 days ago         133MB
kibana              7.9.2               ba296c26886a        4 weeks ago         1.18GB
elasticsearch       7.9.2               caa7a21ca06e        4 weeks ago         763MB
redis               <none>              84c5f6e03bf0        6 weeks ago         104MB
mysql               latest              e1d7dc9731da        6 weeks ago         544MB
consul              latest              0b5c8f1c8872        2 months ago        122MB
kibana              latest              a674d23325b0        2 years ago         388MB
elasticsearch       latest              5acf0e8da90b        2 years ago         486MB

执行如下命令删除dangling images

[root@192 conf]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: redis@sha256:1cfb205a988a9dae5f025c57b92e9643ec0e7ccff6e66bc639d8a5f95bba928c
deleted: sha256:84c5f6e03bf04e139705ceb2612ae274aad94f8dcf8cc630fbf6d91975f2e1c9
deleted: sha256:302d9c99198ac9f8d56c5dae991b77a64e094626553e3cb601132f35d10ccb61
deleted: sha256:9c18c8ee5ed59040373f1fe21b7071062be0c7a274331da22d4f29b30716a53e
deleted: sha256:f8e08eb76c8dbd0c01edda03625e0bd0a3c6521b780374b91d457d4f045aea5e
deleted: sha256:0df6c826b3b757c0c37e282245c139abc81ba1678a506eb5f8f68174ce2fbee1
deleted: sha256:04ea7ac0e6e99e0aeec0cd44a9f99f516e2791e0918f35ca58296f664c05676a

Total reclaimed space: 34.97MB

        删除所有为none的镜像。

docker images  | grep none | awk '{print $3}' | xargs docker rmi

镜像上传

docker push 镜像名称

容器命令

新建容器并启动

docker run [可选参数] image

# 参数说明
--name=“Name”	容器名字,用来区分容器
-d		后台方式运行
-it		使用交互方式运行,进入容器查看内容
-p		指定容器的端口		-p 8080:8080
	-p	ip:主机端口:容器端口
	-p	主机端口:容器端口(常用)
	-p	容器端口
	容器端口
-P		随机指定端口
[root@192 ~]# docker run --name nginxtest -p 80:80 -d nginx
17d917ee4ae153bb58acaf8b5309f2d3e45f56579582f9292189fc6f0af5ce7b

列出所有运行的容器

[root@192 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                NAMES
17d917ee4ae1        nginx               "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   nginxtest

查看所有容器

[root@192 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                NAMES
17d917ee4ae1        nginx               "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   nginxtest
[root@192 ~]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                        PORTS                                            NAMES
17d917ee4ae1        nginx                 "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes                  0.0.0.0:80->80/tcp                               nginxtest

进入运行的容器内部及退出命令

[root@192 ~]# docker exec -it 17d917 /bin/bash
root@17d917ee4ae1:/# ls
bin   docker-entrypoint.d   home   media  proc	sbin  tmp
boot  docker-entrypoint.sh  lib    mnt	  root	srv   usr
dev   etc		    lib64  opt	  run	sys   var
root@17d917ee4ae1:/# exit
exit

删除容器

[root@192 ~]# docker rm -f 17d917ee4ae1
17d917ee4ae1

查看启动的容器日志

[root@192 ~]# docker logs d92e34
2020-09-21 23:30:42+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.21-1debian10 started.
2020-09-21 23:30:42+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-09-21 23:30:42+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.21-1debian10 started.

查看容器元数据

[root@192 ~]# docker inspect d92e348
[
    {
        "Id": "d92e348cf6511434da6cf8c13d1946f07b163d20608a66ea34399885a01029c8",
        "Created": "2020-09-21T23:30:42.132695001Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "mysqld"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 4551,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-10-25T01:09:05.453556041Z",
            "FinishedAt": "2020-10-13T21:33:24.667065861+08:00"
        },
        "Image": "sha256:e1d7dc9731daa2c79858307d65ef35f543daf97457b9c11b681f78bb86f7a158",
        "ResolvConfPath": "/var/lib/docker/containers/d92e348cf6511434da6cf8c13d1946f07b163d20608a66ea34399885a01029c8/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/d92e348cf6511434da6cf8c13d1946f07b163d20608a66ea34399885a01029c8/hostname",
        "HostsPath": "/var/lib/docker/containers/d92e348cf6511434da6cf8c13d1946f07b163d20608a66ea34399885a01029c8/hosts",
        "LogPath": "/var/lib/docker/containers/d92e348cf6511434da6cf8c13d1946f07b163d20608a66ea34399885a01029c8/d92e348cf6511434da6cf8c13d1946f07b163d20608a66ea34399885a01029c8-json.log",
        "Name": "/mysql",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/mydata/mysql/log:/var/log/mysql",
                "/mydata/mysql/conf:/etc/mysql",
                "/mydata/mysql/data:/var/lib/mysql-files"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {
                "3306/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "3306"
                    }
                ]
            },
            "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/c39818b98efb38e5da9fcfae5666d81589f35d408d8e352b02bc4034e396a125-init/diff:/var/lib/docker/overlay2/56854154d8fae2c97fff5bfd7c983bc32293c2dd262eda4d3354db80b3ae2834/diff:/var/lib/docker/overlay2/a5ad59ab21259df730084ef733554219a40fc3278a0361269456db2c52dbf840/diff:/var/lib/docker/overlay2/79c7bc14df7910fb97627d6444ba5eaa45b97146ea2cb3dd9d89a7e59647bf42/diff:/var/lib/docker/overlay2/c8a70c21c64769d598f13efa4e30db58a436467ca939bff161cf29ac4f6254cd/diff:/var/lib/docker/overlay2/4ad66f11ab6fd6d424bce39973be60262c3d7a35fa248fb827bb1aa06b9d92a4/diff:/var/lib/docker/overlay2/2b6dca6256790954ebe78b84cc2567ffae02945104147f8beec0849159dc7d08/diff:/var/lib/docker/overlay2/7f9cfea6be200b901fca2cd6b6dca78786db6a2235e8dc3853a98ed0ebb2cafc/diff:/var/lib/docker/overlay2/5b6be0404a57d56ab65306b4b1d8c9b35d3ad34ee50f47fc269292ec43ab643c/diff:/var/lib/docker/overlay2/87146e13f06af22f6a3a7270e0111cce290c45c9501574114a12cad44e488723/diff:/var/lib/docker/overlay2/b6c486bd3a9c0524425a8ca0b733a36392ab11feb7739aa67149922f610e34e5/diff:/var/lib/docker/overlay2/73386a33448b7bfb1381095969c90e09682bb30196bfabc5e41b03d00b2bc5f1/diff:/var/lib/docker/overlay2/6467195940b5a4457694db416d58e86ba3562cc76cb397b06eb7fc7ff3babb29/diff",
                "MergedDir": "/var/lib/docker/overlay2/c39818b98efb38e5da9fcfae5666d81589f35d408d8e352b02bc4034e396a125/merged",
                "UpperDir": "/var/lib/docker/overlay2/c39818b98efb38e5da9fcfae5666d81589f35d408d8e352b02bc4034e396a125/diff",
                "WorkDir": "/var/lib/docker/overlay2/c39818b98efb38e5da9fcfae5666d81589f35d408d8e352b02bc4034e396a125/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mydata/mysql/data",
                "Destination": "/var/lib/mysql-files",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mydata/mysql/log",
                "Destination": "/var/log/mysql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mydata/mysql/conf",
                "Destination": "/etc/mysql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "volume",
                "Name": "6cfe8adac16fd65d2db848a3aa139614091c27a59669aa1d271fad31329b3de6",
                "Source": "/var/lib/docker/volumes/6cfe8adac16fd65d2db848a3aa139614091c27a59669aa1d271fad31329b3de6/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "d92e348cf651",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {},
                "33060/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "MYSQL_ROOT_PASSWORD=mysql",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.12",
                "MYSQL_MAJOR=8.0",
                "MYSQL_VERSION=8.0.21-1debian10"
            ],
            "Cmd": [
                "mysqld"
            ],
            "Image": "mysql",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "bb79d8a58ff153b3cbf313d6d14a36ff7578c647371562008b515c8094f21479",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "3306/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "3306"
                    }
                ],
                "33060/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/bb79d8a58ff1",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "3806d15a20a7f7470c6d41282ceb288e9b6c4f1dc496cd8b94da76bc94629982",
            "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": "93874ccafcc7d33035b72f124f4c4ecd3f2658ec0cb87f775b02166ec77d3794",
                    "EndpointID": "3806d15a20a7f7470c6d41282ceb288e9b6c4f1dc496cd8b94da76bc94629982",
                    "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 system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          26        12        6.644GB   3.797GB (57%)
Containers      19        18        24.63MB   0B (0%)
Local Volumes   31        2         2.007GB   2.007GB (100%)
Build Cache     35        0         8.138MB   8.138MB

网络

docker network ls
NETWORK ID     NAME                         DRIVER    SCOPE
cbe42e97d8ba   bridge                       bridge    local
09b29114388a   drone-5JLwQ0vdHILWcoZxwGU9   bridge    local
e30d0833f81d   drone-CsEGbn4sKbTUToJdh4b1   bridge    local
02e8adb4d670   drone-FgS97CSeV5DUAJr5WA8Z   bridge    local
e10c55ed3f70   drone-GdOADYMWaMuLCW4nCja3   bridge    local
98751432ee6d   drone-Kwk0Ji4oDFtG971MIfkh   bridge    local
a423a11571b4   drone-L9Cbi3xj4GqOss8d3Y6q   bridge    local
79a5143ae9aa   drone-NYQtl1YxfnNLdJ31WjNq   bridge    local
98acb70377a5   drone-SA5r8GMsYRyhYa8gNWOW   bridge    local
d1d81c205d27   drone-VpIpHbNu8W5p8qYb6QFU   bridge    local
2bbe95e5d2d9   drone-am8oD8cCqfDIlTg23sxA   bridge    local
319f1afaefad   drone-f9itpEVcx5KtA9ewrnV7   bridge    local
667feacac9d2   drone-fCyGixcv5qMvb4ODLArb   bridge    local
c7fa1ed98d22   drone-fntlCfLprRl0RakfC1Zf   bridge    local
396549c979e8   drone-huxV9XIrasrQu1qIFpQv   bridge    local
448e9dc65715   drone-jdEEi0fkcub8SaJPabaq   bridge    local
9d490ed172a6   drone-kHH7kePqUWTUzrJihxBW   bridge    local
3cc31ec77097   drone-pBWjY1kFyvluFvIX4zSi   bridge    local
3fc9ce8a4c72   drone-u7FJweRePWVvonKKWuCc   bridge    local
8fda8cd2813e   drone-v3Mh5SSmHoTsCZ9rqZ4M   bridge    local
e53a503bd228   drone-xBX0y12ql0tfSu3ehu2Q   bridge    local
5f8e3ab30af3   drone-y2uml2GKIOwd4Gd3nB0c   bridge    local
710ff0d625f6   drone-z0JTAtHj7yno8CfJ4I3G   bridge    local
e80c79ed8240   drone_drone                  bridge    local
0f5299c1df2e   elastic                      bridge    local
ef1dac819912   host                         host      local
2c73eee7cf1f   mysql_mysql-net              bridge    local
f00bfa0dbbc9   nacos_nacos                  bridge    local
9f8a1573564d   nginx_default                bridge    local
68fffdd78a41   none                         null      local
288c5a4f3d48   prometheus_default           bridge    local
d46f9461f66c   prometheus_monitor           bridge    local
docker network ls |wc -l
33

数据卷

将容器内的目录挂载到容器外,方便数据的维护和持久化;

docker run -it -v 主机目录:容器目录
[root@192 ~]# docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
> -e  "discovery.type=single-node" \
> -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
> -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
> -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
> -v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
> -d elasticsearch:7.6.2 
说明:
-d		# 后台运行
-p		# 端口隐射
-v		# 卷挂载
-e		# 环境配置

Dockefile

指令

FROM			# 基础镜像,一切从这里开始构建
MAINTAINER		# 镜像是谁写的, 姓名+邮箱
RUN				# 镜像构建的时候需要运行的命令
ADD				# 步骤, tomcat镜像, 这个tomcat压缩包!添加内容
WORKDIR			# 镜像的工作目录
VOLUME			# 挂载的目录
EXPOSE			# 保留端口配置
CMD				# 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT		# 指定这个容器启动的时候要运行的命令, 可以追加命令
ONBUILD			# 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY			# 类似ADD, 将我们文件拷贝到镜像中
ENV 			# 构建的时候设置环境变量!

用dockerfile自制一个tomcat环境

FROM centos
MAINTAINER xiaofan<594042358@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u73-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.37.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_73
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.37
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.37
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.37/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.37/bin/logs/catalina.out


构建镜像

# docker build -t mytomcat .
#命令
-f 文件名 #当我们创建的dockerfile不为dockerfile这个默认名字的时候 ,我们构建的时候就需要用-f命令去指定文件名称
-t 要创建的镜像名称:tag 如果后面不加tag将默认为latest

问题及解决方式

问题1:permission denied

        当运行docker的时候,报如下问题:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: 
Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied

docker安装

安装docker教程

安装docker-compose

sudo apt install docker-compose

解决方法1

        在服务器运行如下代码

permission denied
# 然后输入密码
newgrp docker

        在执行docker命令就可以解决问题了。

本文多数笔记来源遇见狂神说的视频,有兴趣的可以去查看一下


版权声明:本文为qq_40181007原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。