docker --version 查看docker的版本信息
docker info 查看docker的系统信息,包括镜像和容器的数量
docker 命令 --help 帮助命令
https://docs.docker.com/engine/reference/commandline/dockerd/
常用命令
[root@localhost /]# docker search mysql
[root@localhost /]# docker search mysql --filter=stars=4000
测试启动centos镜像:docker run -it centos /bin/bash
[root@localhost /]# docker ps //显示正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost /]# docker ps -a //显示现在和之前运行过的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d23b04c1dab centos "/bin/bash" 9 minutes ago Exited (0) 9 minutes ago wizardly_ptolemy
29b040f0449f d1165f221234 "/hello" 18 hours ago Exited (0) 18 hours ago quirky_elbakyan
[root@localhost /]# docker ps -a -n=1//只显示一个现在+过去运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d23b04c1dab centos "/bin/bash" About a minute ago Exited (0) About a minute ago wizardly_ptolemy
[root@localhost /]# docker ps -qa //只显示容器的ID
6d23b04c1dab
29b040f0449f
exit命令退出后容器停止运行
[root@localhost /]# docker run -it centos /bin/bash
[root@05138395d276 /]# exit //退出后容器停止运行
exit
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
CTRIL+P+Q快捷键容器退出后继续运行
[root@localhost /]# docker run -it centos /bin/bash
[root@df36062ae1df /]# [root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df36062ae1df centos "/bin/bash" 25 seconds ago Up 24 seconds dazzling_feynman
docker rm 容器ID //删除容器,但是不能删除没有停止的
[root@localhost /]# docker rm df36062ae1df //该容器未停止所以不能删除
Error response from daemon: You cannot remove a running container df36062ae1df1ccc6bbb2b34f90558a0f92ea6b35ba3351f304eaff200c99ff9. Stop the container before attempting removal or force remove
[root@localhost /]# docker rm 05138395d276//可以成功删除该容器
05138395d276
docker rm -f $(docker ps -qa)//删除所有容器
[root@localhost /]# docker rm -f $(docker ps -qa)
df36062ae1df
e013d8fc513c
6d23b04c1dab
29b040f0449f
docker ps -qa|xargs docker rm//可以删除所有容器
容器启动
[root@localhost ~]# docker start 47ca7d84fe6d
47ca7d84fe6d
容器停止
[root@localhost ~]# docker stop 47ca7d84fe6d
47ca7d84fe6d
容器重启
[root@localhost ~]# docker restart 47ca7d84fe6d
47ca7d84fe6d
容器强制停止
[root@localhost ~]# docker kill 47ca7d84fe6d
47ca7d84fe6d
#后台运行centos镜像
[root@localhost ~]# docker run -d centos
0da3aefff25ba31c4539c260d2e61f532c4da32f6eed42697374b5d0506df777
#使用docker ps命令查看进程的信息,发现并没有启动的线程
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#问题:如果启动容器后,容器发现自己没有提供服务,会自动关闭(因此必须要有前台进程容器才不会自动关闭)
#启动容器编写shell脚本循环输出一段话
[root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo zujinwei;sleep 1;done"
8a8b9c70dd9cea5de3e6017ca7754b260400833e3238cf5ba807fac06acd8800
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8a8b9c70dd9c centos "/bin/sh -c ‘while t…" 6 seconds ago Up 5 seconds nifty_northcutt
#使用命令查看容器日志
[root@localhost ~]# docker logs -ft --tail 10 8a8b9c70dd9c
2021-04-08T03:25:18.830089990Z zujinwei
2021-04-08T03:25:19.838670694Z zujinwei
2021-04-08T03:25:20.846790938Z zujinwei
2021-04-08T03:25:21.855146800Z zujinwei
2021-04-08T03:25:22.863980643Z zujinwei
2021-04-08T03:25:23.871931089Z zujinwei
2021-04-08T03:25:24.879207105Z zujinwei
2021-04-08T03:25:25.883871801Z zujinwei
2021-04-08T03:25:26.891767165Z zujinwei
2021-04-08T03:25:27.899419158Z zujinwei
2021-04-08T03:25:28.910092079Z zujinwei
2021-04-08T03:25:29.919117213Z zujinwei
## 查看容器的进程信息 docker top 容器ID
[root@localhost ~]# docker top 8a8b9c70dd9c
UID PID PPID C STIME TTY TIME CMD
root 3484 3464 0 23:23 ? 00:00:00 /bin/sh -c while true;do echo zujinwei;sleep 1;done
root 3956 3484 0 23:28 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
#命令
docker inspect 容器ID
#测试
[root@localhost ~]# docker inspect 8a8b9c70dd9c
[
{
"Id": "8a8b9c70dd9cea5de3e6017ca7754b260400833e3238cf5ba807fac06acd8800",
"Created": "2021-04-08T03:23:07.216101623Z",
"Path": "/bin/sh",
"Args": [
"-c",
"while true;do echo zujinwei;sleep 1;done"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 3484,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-04-08T03:23:07.591028767Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
"ResolvConfPath": "/var/lib/docker/containers/8a8b9c70dd9cea5de3e6017ca7754b260400833e3238cf5ba807fac06acd8800/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/8a8b9c70dd9cea5de3e6017ca7754b260400833e3238cf5ba807fac06acd8800/hostname",
"HostsPath": "/var/lib/docker/containers/8a8b9c70dd9cea5de3e6017ca7754b260400833e3238cf5ba807fac06acd8800/hosts",
"LogPath": "/var/lib/docker/containers/8a8b9c70dd9cea5de3e6017ca7754b260400833e3238cf5ba807fac06acd8800/8a8b9c70dd9cea5de3e6017ca7754b260400833e3238cf5ba807fac06acd8800-json.log",
"Name": "/nifty_northcutt",
"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/c4c40fd8bbf05890beb82a080baaf290e2b938f2ef39e9009b496c7ba4305561-init/diff:/var/lib/docker/overlay2/d6320f2167224ccede90a60d6d6edb9fb4831ddbcd081dee7868e3cc9a4bffd4/diff",
"MergedDir": "/var/lib/docker/overlay2/c4c40fd8bbf05890beb82a080baaf290e2b938f2ef39e9009b496c7ba4305561/merged",
"UpperDir": "/var/lib/docker/overlay2/c4c40fd8bbf05890beb82a080baaf290e2b938f2ef39e9009b496c7ba4305561/diff",
"WorkDir": "/var/lib/docker/overlay2/c4c40fd8bbf05890beb82a080baaf290e2b938f2ef39e9009b496c7ba4305561/work"
},
"Name": "overlay2"
},
"Mounts": [],
"Config": {
"Hostname": "8a8b9c70dd9c",
"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 zujinwei;sleep 1;done"
],
"Image": "centos",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20201204",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "f55fbe6de32a17fa6a88f38f324408d91a50fe13729ae58802f6e356d9340618",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/f55fbe6de32a",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "b34e724763ed1a97abb0b9da20a03251fee5dba22f86e1af4b4e48275843aa51",
"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": "8ac37f7d00e9e4b749899f186c46ac5ce1234650c95ac875c977b48e464d75c9",
"EndpointID": "b34e724763ed1a97abb0b9da20a03251fee5dba22f86e1af4b4e48275843aa51",
"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 exec -it
[root@localhost ~]# docker exec -it 8a8b9c70dd9c /bin/bash
[root@8a8b9c70dd9c /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
#命令 dockers attach 容器ID
#进入容器创建文件
#命令:docker cp 容器ID:容器内路径 主机内路径
[root@localhost ~]# docker run -it centos /bin/bash
[root@8f8d2c4fc832 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@8f8d2c4fc832 /]# cd home
[root@8f8d2c4fc832 home]# touch test.java
[root@8f8d2c4fc832 home]# ls
test.java
#进入主机内,使用CP命令
[root@localhost home]# docker cp 8f8d2c4fc832:/home/test.java /home
[root@localhost home]# ls
test.java
端口暴露
#部署nginx流程
1、查找nginx镜像
[root@localhost /]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 14683 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2004 [OK]
2、下载镜像
[root@localhost docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a076a628af6f: Pull complete
0732ab25fa22: Pull complete
d7f36f6fe38f: Pull complete
f72584a26f32: Pull complete
7125e4df9063: Pull complete
Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
3、运行镜像
[root@localhost docker]# docker run -d --name nginx01 -p 3344:80 nginx
5e6ed3742cd2cb3446ea6011ffdac4c2d9f27efced2d5b333a9382bff0a7a3d5
[root@localhost docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e6ed3742cd2 nginx "/docker-entrypoint.…" 12 seconds ago Up 6 seconds 0.0.0.0:3344->80/tcp nginx01
4、本机测试是否可以联通
[root@localhost docker]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
5、进入容器内部
[root@localhost docker]# docker exec -it nginx01 /bin/bash
root@5e6ed3742cd2:/# ls
bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@5e6ed3742cd2:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@5e6ed3742cd2:/# cd etc/nginx
root@5e6ed3742cd2:/etc/nginx# ls
conf.d fastcgi_params koi-utf koi-win mime.types modules nginx.conf scgi_params uwsgi_params win-utf
6、在容器内部进行测试nginx是否安装成功
root@5e6ed3742cd2:/etc/nginx# curl localhost:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
1、下载tomcat镜像
[root@localhost /]# docker pull tomcat:9
9: Pulling from library/tomcat
b9a857cbf04d: Pull complete
d557ee20540b: Pull complete
3b9ca4f00c2e: Pull complete
667fd949ed93: Pull complete
661d3b55f657: Pull complete
511ef4338a0b: Pull complete
a56db448fefe: Pull complete
00612a99c7dc: Pull complete
326f9601c512: Pull complete
c547db74f1e1: Pull complete
Digest: sha256:94cc18203335e400dbafcd0633f33c53663b1c1012a13bcad58cced9cd9d1305
Status: Downloaded newer image for tomcat:9
docker.io/library/tomcat:9
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9 040bdb29ab37 2 months ago 649MB
nginx latest f6d0b4767a6c 2 months ago 133MB
centos latest 300e315adb2f 4 months ago 209MB
2、生成容器
[root@localhost /]# docker run -d --name tomcat01 -p 3355:8080 040bdb29ab37
e822b299c723533f8cd47a687f85fb54b5bf630d8bc9fb6698836ad3eded437b
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e822b299c723 040bdb29ab37 "catalina.sh run" 40 seconds ago Up 35 seconds 0.0.0.0:3355->8080/tcp tomcat01
5e6ed3742cd2 nginx "/docker-entrypoint.…" 54 minutes ago Up 54 minutes 0.0.0.0:3344->80/tcp nginx01
3、进入tomcat内部
[root@localhost /]# docker exec -it tomcat01 /bin/bash
root@e822b299c723:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
root@e822b299c723:/usr/local/tomcat# cd webapps
4、由于tomcat为精简版,webapps内部没有任何文件,因此需要将webapps.distb内部的文件复制到webapps下面
root@e822b299c723:/usr/local/tomcat# cd webapps
root@e822b299c723:/usr/local/tomcat/webapps# ls
root@e822b299c723:/usr/local/tomcat/webapps# cd ..
5、将webapps.distb内部的文件复制到webapps下面
root@e822b299c723:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@e822b299c723:/usr/local/tomcat# cd webapps
root@e822b299c723:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
#启动docker服务
[root@localhost ~]# systemctl start docker
1、直接跑镜像
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
[root@localhost ~]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
Unable to find image ‘elasticsearch:7.6.2‘ locally
7.6.2: Pulling from library/elasticsearch
ab5ef0e58194: Pull complete
c4d1ca5c8a25: Pull complete
941a3cc8e7b8: Pull complete
43ec483d9618: Pull complete
c486fd200684: Pull complete
1b960df074b2: Pull complete
1719d48d6823: Pull complete
Digest: sha256:1b09dbd93085a1e7bca34830e77d2981521a7210e11f11eda997add1c12711fa
Status: Downloaded newer image for elasticsearch:7.6.2
93133269aa1f6131524dec459e9cae7c1bd8f484c0bf776a6346c3b63b2437b4
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9 040bdb29ab37 2 months ago 649MB
nginx latest f6d0b4767a6c 2 months ago 133MB
centos latest 300e315adb2f 4 months ago 209MB
elasticsearch 7.6.2 f29a1ee41030 12 months ago 791MB
2、查看容器CPU占用情况 docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
93133269aa1f elasticsearch 1.31% 1.223GiB / 2.761GiB 44.29% 1.1kB / 0B 123kB / 1.67MB 42
3、查看es已经在运行
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
93133269aa1f elasticsearch:7.6.2 "/usr/local/bin/dock…" 3 minutes ago Up 2 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
4、测试是否安装成功
[root@localhost ~]# curl localhost:9200
{
"name" : "93133269aa1f",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "099c43bBSXCwMiNnQPvIbQ",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
5、添加内存限制
[root@localhost ~]# docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xms512m" elasticsearch:7.6.2
238f34259f1c651dbef5a66938370f5b1c81215e047154ab45488e16e2813342
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
238f34259f1c elasticsearch:7.6.2 "/usr/local/bin/dock…" 30 seconds ago Up 28 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch02
6、思考kibana连接ES?
Docker图形化管理工具
#安装命令
[root@localhost ~]# docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
原文:https://www.cnblogs.com/fightsun/p/14628788.html