docker
RUN的流程和docker的原理
Docker底层原理
docker是一个client-server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。
dockerserver接收到docker-client的指令就会执行命令
Docker为什么比虚拟机快?
1、docker有着比虚拟机更少的抽象层
2、docker使用的是宿主机的内核,虚拟机需要Guest OS
在新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest OS,分钟级别的。而docker是利用宿主机的操作系统,省略了这个复杂的过程。
Docker的常用命令
帮助命令
docker version #显示版本信息docker info #显示docker的系统信息,包括镜像和容器的数量docker 命令 --help #帮助命令
帮助文档地址:https://docs.docker.com/reference/
镜像命令
docker images 查看主机本地所有镜像
[root@docker-study ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest feb5d9fea6a5 4 months ago 13.3kB#解释REPOSITORY 镜像的仓库源TAG 镜像的标签IMAGE ID 镜像的IDCREATED 镜像的创建时间SIZE 镜像的大小#可选项-a, --all #列出所有镜像-q, --quiet #只显示镜像ID
docker search 搜索镜像
[root@docker-study ~]# docker search mysqlNAME DESCRIPTION STARS OFFICIAL AUTOMATEDmysql MySQL is a widely used, open-source relation… 12078 [OK]mariadb MariaDB Server is a high performing open sou… 4629 [OK]mysql/mysql-server Optimized MySQL Server Docker images. Create… 904 [OK]#可选项,通过收藏来过滤--filter=STARS=3000 #搜索镜像收藏量达到3000的[root@docker-study ~]# docker search mysql --filter=STARS=3000NAME DESCRIPTION STARS OFFICIAL AUTOMATEDmysql MySQL is a widely used, open-source relation… 12078 [OK]mariadb MariaDB Server is a high performing open sou… 4629 [OK][root@docker-study ~]# docker search mysql --filter=STARS=5000NAME DESCRIPTION STARS OFFICIAL AUTOMATEDmysql MySQL is a widely used, open-source relation… 12078 [OK]
docker pull 下载镜像
#下载镜像 docker pull 镜像名 [:tag][root@docker-study ~]# docker pull mysqlUsing default tag: latest #如果不写tag,默认就是latestlatest: Pulling from library/mysql72a69066d2fe: Pull complete #分层下载,docker images的核心,联合文件系统93619dbc5b36: Pull complete99da31dd6142: Pull complete626033c43d70: Pull complete37d5d7efb64e: Pull completeac563158d721: Pull completed2ba16033dad: Pull complete688ba7d5c01a: Pull complete00e060b6d11d: Pull complete1c04857f594f: Pull complete4d7cfa90e6ea: Pull completee0431212d27d: Pull completeDigest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709 #签名Status: Downloaded newer image for mysql:latestdocker.io/library/mysql:latest #真实地址#docker pull mysql = docker pull docker.io/library/mysql:latest#指定版本下载[root@docker-study ~]# docker pull mysql:5.75.7: Pulling from library/mysql72a69066d2fe: Already exists93619dbc5b36: Already exists99da31dd6142: Already exists626033c43d70: Already exists37d5d7efb64e: Already existsac563158d721: Already existsd2ba16033dad: Already exists0ceb82207cd7: Pull complete37f2405cae96: Pull completee2482e017e53: Pull complete70deed891d42: Pull completeDigest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94Status: Downloaded newer image for mysql:5.7docker.io/library/mysql:5.7[root@docker-study ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql 5.7 c20987f18b13 7 weeks ago 448MBmysql latest 3218b38490ce 7 weeks ago 516MBhello-world latest feb5d9fea6a5 4 months ago 13.3kB
docker rmi 删除镜像
docker rmi -f 镜像ID #删除指定镜像docker rmi -f 镜像ID 镜像ID 镜像ID #删除多个镜像docker rmi -f $(docker images -qa) #删除全部镜像[root@docker-study ~]# docker rmi c20987f18b13Untagged: mysql:5.7Untagged: mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94Deleted: sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76Deleted: sha256:6567396b065ee734fb2dbb80c8923324a778426dfd01969f091f1ab2d52c7989Deleted: sha256:0910f12649d514b471f1583a16f672ab67e3d29d9833a15dc2df50dd5536e40fDeleted: sha256:6682af2fb40555c448b84711c7302d0f86fc716bbe9c7dc7dbd739ef9d757150Deleted: sha256:5c062c3ac20f576d24454e74781511a5f96739f289edaadf2de934d06e910b92[root@docker-study ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql latest 3218b38490ce 7 weeks ago 516MBhello-world latest feb5d9fea6a5 4 months ago 13.3kB[root@docker-study ~]# docker rmi -f $(docker images -qa)Untagged: mysql:latestUntagged: mysql@sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709Deleted: sha256:3218b38490cec8d31976a40b92e09d61377359eab878db49f025e5d464367f3bDeleted: sha256:aa81ca46575069829fe1b3c654d9e8feb43b4373932159fe2cad1ac13524a2f5Deleted: sha256:0558823b9fbe967ea6d7174999be3cc9250b3423036370dc1a6888168cbd224dDeleted: sha256:a46013db1d31231a0e1bac7eeda5ad4786dea0b1773927b45f92ea352a6d7ff9Deleted: sha256:af161a47bb22852e9e3caf39f1dcd590b64bb8fae54315f9c2e7dc35b025e4e3Deleted: sha256:feff1495e6982a7e91edc59b96ea74fd80e03674d92c7ec8a502b417268822ffDeleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287baDeleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3daDeleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aaDeleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2Untagged: hello-world:latestUntagged: hello-world@sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60fDeleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412[root@docker-study ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE
容器命令
说明:我们有了镜像才可以创建容器,Linux,下载一个centOS镜像来测试学习
docker pull centOS[root@docker-study ~]# docker pull centosUsing default tag: latestlatest: Pulling from library/centosa1d0c7532777: Pull completeDigest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177Status: Downloaded newer image for centos:latestdocker.io/library/centos:latest
新建容器并启动
docker run [可选参数] image#参数说明--name="Name" 容器名字tomcat01 tomcat02 ,用来区分容器-d 后台方式运行-it 使用交互方式运行,进入容器来查看内容-p 指定容器的端口 -p 8080:8080-p ip:主机端口:容器端口-p 主机端口:容器端口(常用)-p 容器端口容器端口-p 随机指定端口#测试,启动并进入容器[root@docker-study ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos latest 5d0da3dc9764 4 months ago 231MB[root@docker-study ~]# docker run -it centos /bin/bash[root@05da8ec80dae /]# #此时已进入容器,主机名就是centOS的镜像ID[root@05da8ec80dae /]# ls #查看容器内的centOSbin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var#从容器中退出到主机[root@05da8ec80dae /]# exitexit[root@docker-study ~]# lsdocker-client docker-client-latest docker-common docker-engine docker-latest docker-latest-logrotate docker-logrotate
docker ps 列出所有在运行的容器
#docker ps 命令#列出当前正在运行的容器-a #列出当前正在运行的容器+带出历史运行过的容器-n=? #显示最近创建的容器-q #只显示容器的编号[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES[root@docker-study ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES05da8ec80dae centos "/bin/bash" 10 minutes ago Exited (130) 7 minutes ago sad_zhukovsky8d41ef521f11 feb5d9fea6a5 "/hello" 6 days ago Exited (0) 6 days ago gracious_raman34c15feb1abc feb5d9fea6a5 "/hello" 7 days ago Exited (0) 7 days ago affectionate_lederbergae0e80ec3300 feb5d9fea6a5 "/hello" 3 weeks ago Exited (0) 3 weeks ago blissful_pascal[root@docker-study ~]# docker ps -qa05da8ec80dae8d41ef521f1134c15feb1abcae0e80ec3300
退出容器
exit #直接容器停止并退出Ctrl + P + Q #容器不停止退出[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES[root@docker-study ~]# docker run -it centos /bin/bash[root@9d3728df88a3 /]# [root@docker-study ~]#[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES9d3728df88a3 centos "/bin/bash" 22 seconds ago Up 21 seconds gracious_ritchie[root@docker-study ~]#
删除容器
docker rm 容器ID #删除指定容器,不能删除正在运行的容器,如果要强制删除加参数 -fdocker rm -f $(docker ps -aq) #删除所有容器docker ps -a -q|xargs docker rm #删除所有容器[root@docker-study ~]# docker ps -qa9d3728df88a305da8ec80dae8d41ef521f1134c15feb1abcae0e80ec3300[root@docker-study ~]# docker rm -f $(docker ps -qa)9d3728df88a305da8ec80dae8d41ef521f1134c15feb1abcae0e80ec3300[root@docker-study ~]# docker ps -qa[root@docker-study ~]#
启动和停止容器
docker start 容器ID #启动容器docker restart 容器ID #重启容器docker stop 容器ID #停止容器docker kill 容器ID #强制停止当前容器[root@docker-study ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES94f45ae20dc3 centos "/bin/bash" 13 seconds ago Exited (0) 9 seconds ago vibrant_wilbur[root@docker-study ~]# docker start 94f45ae20dc394f45ae20dc3[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES94f45ae20dc3 centos "/bin/bash" 27 seconds ago Up 3 seconds vibrant_wilbur[root@docker-study ~]# docker stop 94f45ae20dc394f45ae20dc3[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
常用其他命令
后台启动容器
#docker run -d 镜像名[root@docker-study ~]# docker run -d centos97dfebc630aca3b51325171bdcdbccfc2ea7ac5fdb2c68d6cb6a7fa9f97787a6[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES#常见的坑,docker容器使用后台运行,必须要有一个前台进程,docker发现没有应用就会自动停止#如Nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
日志命令
docker logs -f -t 容器 查看日志[root@docker-study ~]# docker logs --helpUsage: docker logs [OPTIONS] CONTAINERFetch the logs of a containerOptions:--details Show extra details provided to logs-f, --follow Follow log output--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)-n, --tail string Number of lines to show from the end of the logs (default "all")-t, --timestamps Show timestamps--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)#示例[root@docker-study ~]# docker logs -f -t --tail 10 f9ef58bcedbc[root@f9ef58bcedbc /]#2022-02-09T03:27:10.582692084Z [root@f9ef58bcedbc /]#2022-02-09T03:27:10.743300956Z [root@f9ef58bcedbc /]#
查看容器进程信息
#命令 docker top 容器ID[root@docker-study ~]# docker top f9ef58bcedbcUID PID PPID C STIME TTY TIME CMDroot 23726 23707 0 11:27 pts/0 00:00:00 /bin/bash
查看镜像的源数据
docker inspect --helpdocker inspect 容器ID[root@docker-study ~]# docker inspect f9ef58bcedbc[{"Id": "f9ef58bcedbc22b01599f8e4fe44ae42b7a2bc89b3e6ca62de6efeda3197b796","Created": "2022-02-09T03:27:08.082029047Z","Path": "/bin/bash","Args": [],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 23726,"ExitCode": 0,"Error": "","StartedAt": "2022-02-09T03:27:08.371537901Z","FinishedAt": "0001-01-01T00:00:00Z"},"Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6","ResolvConfPath": "/var/lib/docker/containers/f9ef58bcedbc22b01599f8e4fe44ae42b7a2bc89b3e6ca62de6efeda3197b796/resolv.conf","HostnamePath": "/var/lib/docker/containers/f9ef58bcedbc22b01599f8e4fe44ae42b7a2bc89b3e6ca62de6efeda3197b796/hostname","HostsPath": "/var/lib/docker/containers/f9ef58bcedbc22b01599f8e4fe44ae42b7a2bc89b3e6ca62de6efeda3197b796/hosts","LogPath": "/var/lib/docker/containers/f9ef58bcedbc22b01599f8e4fe44ae42b7a2bc89b3e6ca62de6efeda3197b796/f9ef58bcedbc22b01599f8e4fe44ae42b7a2bc89b3e6ca62de6efeda3197b796-json.log","Name": "/serene_ride","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/7ba9d35ee1ad76ceecf5cbaef3091911beb007abbb0e51859c529c8fc4893aeb-init/diff:/var/lib/docker/overlay2/6df7b1af7482da173f6ad2d19ec4069282f7f27a281cd479f044b0d108321f00/diff","MergedDir": "/var/lib/docker/overlay2/7ba9d35ee1ad76ceecf5cbaef3091911beb007abbb0e51859c529c8fc4893aeb/merged","UpperDir": "/var/lib/docker/overlay2/7ba9d35ee1ad76ceecf5cbaef3091911beb007abbb0e51859c529c8fc4893aeb/diff","WorkDir": "/var/lib/docker/overlay2/7ba9d35ee1ad76ceecf5cbaef3091911beb007abbb0e51859c529c8fc4893aeb/work"},"Name": "overlay2"},"Mounts": [],"Config": {"Hostname": "f9ef58bcedbc","Domainname": "","User": "","AttachStdin": true,"AttachStdout": true,"AttachStderr": true,"Tty": true,"OpenStdin": true,"StdinOnce": true,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/bash"],"Image": "centos","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {"org.label-schema.build-date": "20210915","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": "2168c4c91c075b8134cc259c17afde9a28946dfb8bf06c5c0e2f434d2e96c62c","HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"Ports": {},"SandboxKey": "/var/run/docker/netns/2168c4c91c07","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "de22f93950fedcf1e3027027639f44e4c8656bb5e50d382022af5aa4ba508e5d","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": "7880e542400c7c6f979fc23350e95e6cb9e5bea5f8984210c08b3eee6bec61dd","EndpointID": "de22f93950fedcf1e3027027639f44e4c8656bb5e50d382022af5aa4ba508e5d","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 容器ID bashShell #进入容器并开启新的终端,可以在里面操作(常用)[root@docker-study ~]# docker exec -it f9ef58bcedbc /bin/bash[root@f9ef58bcedbc /]#[root@f9ef58bcedbc /]# lsbin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var[root@f9ef58bcedbc /]# ps -efUID PID PPID C STIME TTY TIME CMDroot 1 0 0 03:27 pts/0 00:00:00 /bin/bashroot 15 0 0 03:42 pts/1 00:00:00 /bin/bashroot 30 15 0 03:42 pts/1 00:00:00 ps -ef#方式二docker attach 容器ID #进入到正在运行的终端,不启用新的终端[root@docker-study ~]# docker attach f9ef58bcedbc[root@f9ef58bcedbc /]#
从容器拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径[root@docker-study home]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos latest 5d0da3dc9764 4 months ago 231MB[root@docker-study home]# docker run -it centos /bin/bash[root@f9cd3b36b5df /]# lsbin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var[root@f9cd3b36b5df /]# touch test.txt[root@f9cd3b36b5df /]# exitexit[root@docker-study home]# ls[root@docker-study home]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESf9cd3b36b5df centos "/bin/bash" About a minute ago Exited (0) About a minute ago modest_brahmagupta[root@docker-study home]# docker cp f9cd3b36b5df:/test.txt ./[root@docker-study home]# lstest.txt#拷贝是一个手动过程,可以使用-v 卷的技术实现自动同步
练习
安装Nginx
#1、搜索镜像 search 建议去docker官网搜索,可以看到帮助文档[root@docker-study ~]# docker search nginxNAME DESCRIPTION STARS OFFICIAL AUTOMATEDnginx Official build of Nginx. 16272 [OK]jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2115 [OK]。。。。。。#2、下载镜像[root@docker-study ~]# docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxa2abf6c4d29d: Pull completea9edb18cadd1: Pull complete589b7251471a: Pull complete186b1aaa4aa6: Pull completeb4df32aa5a72: Pull completea0bcbecc962e: Pull completeDigest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest[root@docker-study ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 605c77e624dd 5 weeks ago 141MBcentos latest 5d0da3dc9764 4 months ago 231MB#3、运行[root@docker-study ~]# docker run -d --name nginx01 -p 3344:80 nginx17fe19a3592426aa2d2f7a324b7af5016e8731d3ab309890b2efd11ff4e1dc3f#-d 后台运行#--name 给容器命名#-p 宿主机端口,容器内部端口#4、查看是否运行成功,并测试[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES17fe19a35924 nginx "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01[root@docker-study ~]# curl localhost:3344<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>html { color-scheme: light dark; }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 andworking. 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>#进入容器[root@docker-study ~]# docker exec -it nginx01 /bin/bashroot@17fe19a35924:/# whereis nginxnginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginxroot@17fe19a35924:/# cd /etc/nginx/root@17fe19a35924:/etc/nginx# lsconf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_paramsroot@17fe19a35924:/etc/nginx#
端口暴露
安装Tomcat
#官方的使用方式docker run -it --rm tomcat:9.0#之前的启动都是后台,停止了容器之后,容器还可以查到,docker run -it --rm,一般用来测试,用完就删除#下载再启动docker pull tomcat#启动运行[root@docker-study ~]# docker run -d -p 3355:8080 --name tomcat01 tomcat2cc1e0f33ad035e19a0d4dda8342d36b9095d0305115294a121c508c9a958946[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES2cc1e0f33ad0 tomcat "catalina.sh run" 5 seconds ago Up 4 seconds 0.0.0.0:3355->8080/tcp, :::3355->8080/tcp tomcat01#进入容器[root@docker-study ~]# docker exec -it tomcat01 /bin/bashroot@2cc1e0f33ad0:/usr/local/tomcat# lsBUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.distCONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps workroot@2cc1e0f33ad0:/usr/local/tomcat# llbash: ll: command not found#发现问题,1,Linux命令少了,2,没有webapps 阿里云镜像的原因,默认是最小化安装,所有不必要的都删除掉了# webapps.dist目录下的文件复制到 webapps即可访问网页root@2cc1e0f33ad0:/usr/local/tomcat# cp -r webapps.dist/* webappsroot@2cc1e0f33ad0:/usr/local/tomcat# cd webappsroot@2cc1e0f33ad0:/usr/local/tomcat/webapps# lsROOT docs examples host-manager managerroot@2cc1e0f33ad0:/usr/local/tomcat/webapps#
部署es+kibana
#es 暴露的端口很多#es 十分的耗内存#es 的数据一般需要放置到安全目录!挂载#--net somenetwork 网络配置#启动elasticsearchdocker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2[root@docker-study ~]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2Unable to find image 'elasticsearch:7.6.2' locally7.6.2: Pulling from library/elasticsearchab5ef0e58194: Pull completec4d1ca5c8a25: Pull complete941a3cc8e7b8: Pull complete43ec483d9618: Pull completec486fd200684: Pull complete1b960df074b2: Pull complete1719d48d6823: Pull completeDigest: sha256:1b09dbd93085a1e7bca34830e77d2981521a7210e11f11eda997add1c12711faStatus: Downloaded newer image for elasticsearch:7.6.233a87b02fc59c89072c53d7f5ed895621416af3dbc4e2bcf5a63fdfd65c5cefb#启动后Linux就卡住了,docker stats 查看CPU状态#查看es并测试是否启动成功[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES33a87b02fc59 elasticsearch:7.6.2 "/usr/local/bin/dock…" 4 minutes ago Up 4 minutes 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch[root@docker-study ~]# curl localhost:9200{"name" : "33a87b02fc59","cluster_name" : "docker-cluster","cluster_uuid" : "CH-re-6tSvquYS39KNh6OQ","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"}#修改配置增加内存限制, -e 环境配置修改[root@docker-study ~]# docker run -d --name elasticsearch05 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx521m" elasticsearch:7.6.21eba40920a6b055fdc04270176dff8a907f3edf7ee3db496d22a22105734962f[root@docker-study ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1eba40920a6b elasticsearch:7.6.2 "/usr/local/bin/dock…" 3 seconds ago Up 2 seconds 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch05
可视化
portainer、Rancher(CI/CD时使用)
portainer
Docker 图形化管理工具,提供一个后台面板供我们操作
[root@docker-study ~]# docker run -d -p 8088:9000 \> --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainerUnable to find image 'portainer/portainer:latest' locallylatest: Pulling from portainer/portainer94cfa856b2b1: Pull complete49d59ee0881a: Pull completea2300fd28637: Pull completeDigest: sha256:fb45b43738646048a0a0cc74fcee2865b69efde857e710126084ee5de9be0f3fStatus: Downloaded newer image for portainer/portainer:latest05b28d413e8408a53dd26f2985c261bd9897cd5f8f3dda9d10ac1abdf82c3907
外网浏览器访问服务器+端口


