文章目录
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-compose
sudo apt install docker-compose
解决方法1
在服务器运行如下代码
permission denied
# 然后输入密码
newgrp docker
在执行docker命令就可以解决问题了。
本文多数笔记来源遇见狂神说的视频,有兴趣的可以去查看一下