2023年7月6日发(作者:)
docker容器部署的应⽤启动⽇志在哪⾥看_docker命令详细讲解(⼀)docker命令详细讲解⼀、docker详解1.1、Docker的介绍Docker是⼀个开源的应⽤容器引擎,使⽤Go语⾔开发,基于Linux内核的cgroup,namespace,Union FS等技术,对应⽤进程进⾏封装隔离,并且独⽴于宿主机与其他进程,这种运⾏时封装的状态称为容器。Docker早期版本实现是基于LXC,并进⼀步对其封装,包括⽂件系统、⽹络互联、镜像管理等⽅⾯,极⼤简化了容器管理。从0.7版本以后开始去除LXC,转为⾃⾏研发的libcontainer,从1.11版本开始,进⼀步演进为使⽤runC和containerd。Docker理念是将应⽤及依赖包打包到⼀个可移植的容器中,可发布到任意Linux发⾏版Docker引擎上。使⽤沙箱机制运⾏程序,程序之间相互隔离。1.2、docker的体系架构Containerd:是⼀个简单的守护进程,使⽤runC管理容器。向Docker Engine提供接⼝。Shim:只负责管理⼀个容器。runC:是⼀个轻量级的⼯具,只⽤来运⾏容器。1.4、docker的内部组件1. Namespaces命名空间,Linux内核提供的⼀种对进程资源隔离的机制,例如进程、⽹络、挂载点等资源。2. CGroups控制组,Linux内核提供的⼀种限制进程资源的机制;例如CPU、内存等资源。3. UnionFS联合⽂件系统,⽀持将不同位置的⽬录挂载到同⼀虚拟⽂件系统,形成⼀种分层的模型。1.5、虚拟机与容器区别以 KVM 举例,与 Docker 对⽐启动时间Docker秒级启动,KVM分钟级启动。轻量级容器镜像⼤⼩通常以M为单位,虚拟机以G为单位。容器资源占⽤⼩,要⽐虚拟机部署更快速。性能容器共享宿主机内核,系统级虚拟化,占⽤资源少,没有Hypervisor层开销,容器性能基本接近物理机;虚拟机需要Hypervisor层⽀持,虚拟化⼀些设备,具有完整的GuestOS,虚拟化开销⼤,因⽽降低性能,没有容器性能好。安全性由于共享宿主机内核,只是进程级隔离,因此隔离性和稳定性不如虚拟机,容器具有⼀定权限访问宿主机内核,存在⼀定安全隐患。使⽤ 要求KVM基于硬件的完全虚拟化,需要硬件CPU虚拟化技术⽀持;容器共享宿主机内核,可运⾏在主流的Linux发⾏版,不⽤考虑CPU是否⽀持虚拟化技术。1.6、docker 的应⽤场景场景⼀:节省项⽬环境部署时间1. 单项⽬打包2. 整套项⽬打包3. 新开源技术试⽤场景⼆:环境⼀致性场景三:持续集成场景四:微服务场景五:弹性伸缩1.7、在Centos7.x安装dockerCentOS7# 安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm2# 添加Docker软件包源yum-config-manager --add-repo 什么是镜像?简单说,Docker镜像是⼀个不包含Linux内核⽽⼜精简的Linux操作系统。镜像从哪⾥来?Docker Hub是由Docker公司负责维护的公共注册中⼼,包含⼤量的容器镜像,Docker⼯具默认从这个公共镜像库下载镜像。/explore默认是国外的源,下载会慢,建议配置国内镜像仓库:# vi /etc/docker/{"registry-mirrors": [ ""]}----重启⼀下:systemctl restart docker1.9、镜像与容器的关系镜像不是⼀个单⼀的⽂件,⽽是有多层构成。我们可以通过docker history 查看镜像中各层内容及⼤⼩,每层对应着Dockerfile中的⼀条指令。Docker镜像默认存储在/var/lib/docker/中。容器其实是在镜像的最上⾯加了⼀层读写层,在运⾏容器⾥做的任何⽂件改动,都会写到这个读写层。如果容器删除了,最上⾯的读写层也就删除了,改动也就丢失了。Docker使⽤存储驱动管理镜像每层内容及可读写层的容器层。2.0、存储驱动2.1、镜像命令⼆、docker常⽤命令2.1、查看版本[root@ansible-server ~]# docker --versionDocker version 18.09.6, build 481bc771562.2、查看帮助[root@ansible-server ~]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersOptions:--config string Location of client config files (default "/root/.docker")-D, --debug Enable debug mode-H, --host list Daemon socket(s) to connect to-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")--tls Use TLS; implied by --tlsverify--tlscacert string Trust certs signed only by this CA (default "/root/.docker/")--tlscert string Path to TLS certificate file (default "/root/.docker/")--tlskey string Path to TLS key file (default "/root/.docker/")--tlsverify Use TLS and verify the remote-v, --version Print version information and quit2.3、查看镜像分层[root@ansible-server ~]# docker image history nginx:latestIMAGE CREATED CREATED BY SIZE COMMENT53f3fd8007f7 2 weeks ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B2 weeks ago /bin/sh -c #(nop) STOPSIGNAL SIGTERM 0B2 weeks ago /bin/sh -c #(nop) EXPOSE 80 0B2 weeks ago /bin/sh -c ln -sf /dev/stdout /var/log/nginx… 22B2 weeks ago /bin/sh -c set -x && apt-get update && apt… 54.1MB2 weeks ago /bin/sh -c #(nop) ENV NJS_VERSION=1.15.12.0… 0B2 weeks ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.15.12…0B2 weeks ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B2 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B2 weeks ago /bin/sh -c #(nop) ADD file:fcb9328ea4c115670… 55.3MB2.4、查看镜像的详细信息查看镜像的详细信息[root@ansible-server ~]# docker image inspect nginx[{"Id": "sha256:53f3fd8007f76bd23bf663ad5f5009c8941f63828ae458cef584b5f85dc0a7bf","RepoTags": ["nginx:latest"],"RepoDigests": [省略部分......2.5、下载镜像[root@ansible-server ~]# docker image pull nginx:1.111.11: Pulling from library/nginx6d827a3ef358: Pull completef8f2e0556751: Pull complete5c9972dca3fd: Pull complete451b9524cb06: Pull completeDigest: sha256:e6693c20186f837fc393390135d8a598a96a833917917789d63766cab6c59582Status: Downloaded newer image for nginx:1.112.6、删除镜像查看并删除镜像[root@ansible-server ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 53f3fd8007f7 2 weeks ago 109MBnginx 1.11 5766334bdaa0 2 years ago 183MB[root@ansible-server ~]# docker image rm nginx:1.11Untagged: nginx:1.11Untagged: nginx@sha256:e6693c20186f837fc393390135d8a598a96a833917917789d63766cab6c59582Deleted: sha256:5766334bdaa0bc37f1f0c02cb94c351f9b076bcffa042d6ce811b0fd9bc31f3bDeleted: sha256:1fcf2d3addf02c3b6add24c7b0993038f7e3eee616b10e671e25440e03bc7697Deleted: sha256:51c56cdbb9306c4d6f2da2b780924f3b926bd13d15a4f6693a5175690e288436Deleted: sha256:ec9a826666cfa5df0471f716145da63294019c09a5f2e31613122b57df8f7ce0Deleted: sha256:5d6cbe0dbcf9a675e86aa0fbedf7ed8756d557c7468d6a7c64bde7fa9e0296362.7、给镜像打tag#给镜像打tag,再查看[root@ansible-server ~]# docker tag nginx:1.11 nginx:v1[root@ansible-server ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 53f3fd8007f7 2 weeks ago 109MBnginx 1.11 5766334bdaa0 2 years ago 183MBnginx v1 5766334bdaa0 2 years ago 183MB2.8、导出镜像[root@ansible-server ~]# docker image save nginx:1.11 >[root@ansible-server ~]# du -sh 182M 2.9、导⼊镜像#删除这个已存在的镜像[root@ansible-server ~]# docker rmi nginx:1.11Untagged: nginx:1.11#再导⼊镜像[root@ansible-server ~]# docker loadLoaded image: nginx:1.11#查看镜像[root@ansible-server ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 53f3fd8007f7 2 weeks ago 109MBnginx 1.11 5766334bdaa0 2 years ago 183MBnginx v1 5766334bdaa0 2 years ago 183MB3.0、运⾏⼀个容器[root@ansible-server ~]# docker run -itd nginxb8ecef224d29f0eaece24c9406e88207491443ab6beb053eb560dce2171b8b4a#查看容器[root@ansible-server ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb8ecef224d29 nginx "nginx -g 'daemon of…" 9 seconds ago Up 6 seconds 80/tcp affectionate_feistel3.1、导出⼀个正在运⾏的容器(备注:导出后就变成了⼀个镜像⽂件)[root@ansible-server ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb8ecef224d29 nginx "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes 80/tcp affectionate_feistel[root@ansible-server ~]# docker export b8ecef224d29 >[root@ansible-server ~]# du -sh 107M 3.2、导⼊镜像[root@ansible-server ~]# docker image import nginx:selfsha256:bbf50008d2bfb21486bb723cb9779ac04e854ee7e8176529d433941527a10fb9[root@ansible-server ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx self 594fc0cf36b0 58 seconds ago 108MBnginx latest 53f3fd8007f7 2 weeks ago 109MBnginx 1.11 5766334bdaa0 2 years ago 183MBnginx v1 5766334bdaa0 2 years ago 183MB三、容器管理3.1、查看容器命令[root@ansible-server ~]# docker container --helpUsage: docker container COMMANDManage containersCommands:attach Attach local standard input, output, and error streams to a running containercommit Create a new image from a container's changescp Copy files/folders between a container and the local filesystemcreate Create a new containerdiff Inspect changes to files or directories on a container's filesystemexec Run a command in a running containerexport Export a container's filesystem as a tar archiveinspect Display detailed information on one or more containerskill Kill one or more running containerslogs Fetch the logs of a containerls List containerspause Pause all processes within one or more containersport List port mappings or a specific mapping for the containerprune Remove all stopped containersrename Rename a containerrestart Restart one or more containersrm Remove one or more containersrun Run a command in a new containerstart Start one or more stopped containersstats Display a live stream of container(s) resource usage statisticsstop Stop one or more running containerstop Display the running processes of a containerunpause Unpause all processes within one or more containersupdate Update configuration of one or more containerswait Block until one or more containers stop, then print their exit codesRun 'docker container COMMAND --help' for more information on a command.3.2、创建容器常⽤选项3.3、创建⼀个容器#创建⼀个重命名为bs的容器[root@ansible-server ~]# docker container run -itd --name bs busybox27080338dabb3d76d3a5864999e2085240d3a6e9c7ef201bd91f9d18c0167969#查看容器[root@ansible-server ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES27080338dabb busybox "sh" 49 seconds ago Up 47 seconds bsd5ee27264bd3 alpine "/bin/sh" 3 minutes ago Exited (0) About a minute ago focusb8ecef224d29 nginx "nginx -g 'daemon of…" 45 minutes ago Up 45 minutes 80/tcp affec#进⼊容器中[root@ansible-server ~]# docker container attach bs/ # lsbin dev etc home proc root sys tmp usr var/ # ps -efPID USER TIME COMMAND1 root 0:00 sh8 root 0:00 ps -ef/ # ifconfigeth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:03inet addr:172.17.0.3 Bcast:172.17.255.255 Mask:255.255.0.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:8 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:648 (648.0 B) TX bytes:0 (0.0 B)lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)/ # echo "123" >>/etc/hosts/ # tail -1 /etc/hosts123/ # exit #退出容器,同时终端也会并闭。3.4、进⼊容器命令[root@ansible-server ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES27080338dabb busybox "sh" 15 minutes ago Up 4 minutes bs[root@ansible-server ~]# docker exec -it bs sh/ # lsbin dev etc home proc root sys tmp usr var/ #3.5、运⾏容器,映射端⼝80到8088上⾯。#运⾏容器,映射端⼝80到8088上⾯。[root@ansible-server ~]# docker container run -itd -p 8080:80 --name nginx02 nginx71beefd3446a4db2cf316c5ca6611256fd77a3e49494e89838c59e520ebfac4c#查看容器[root@ansible-server ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES71beefd3446a nginx "nginx -g 'daemon of…" 17 seconds ago Up 15 seconds 0.0.0.0:8080->80/tcp nginx02#访问这个容器59.47.71.220:8080返回结果:Welcome to nginx!3.6、查看容器的⽇志(备注:⽇志会输出到控制台)#查看容器的⽇志(备注:⽇志会输出到控制台)[root@ansible-server ~]# docker logs nginx0298.142.138.176 - - [23/May/2019:02:59:08 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"2019/05/23 02:59:09 [error] 6#6: *2 open() "/usr/share/nginx/html/" failed (2: No such file or directory),client: 98.142.138.176, server: localhost, request: "GET / HTTP/1.1", host: "59.47.71.229:8080", referrer:"59.47.71.229:8080/"98.142.138.176 - - [23/May/2019:02:59:09 +0000] "GET / HTTP/1.1" 404 556 "59.47.71.229:8080/""Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169Safari/537.36" "-"#容器⽇志保存地址[root@ansible-server ~]# ls /var/lib/docker/containers/71beefd3446a4db2cf316c5ca6611256fd77a3e49494e89838c59e520ebfac4c#进⼊⽇志⽬录,查看访问⽇志[root@ansible-server containers]# cd 71beefd3446a4db2cf316c5ca6611256fd77a3e49494e89838c59e520ebfac4c/[root@ansible-server 71beefd3446a4db2cf316c5ca6611256fd77a3e49494e89838c59e520ebfac4c]# lltotal 28-rw-r-----. 1 root root 1751 May 23 11:0871beefx------. 2 root root 6 May 23 10:57 checkpoints-rw-------. 1 root root 2900 May 23 10:57 -rw-r--r--. 1 root root 1463 May 23 10:57 -rw-r--r--. 1 root root 13 May 23 10:57 hostname-rw-r--r--. 1 root root 174 May 23 10:57 hostsdrwx------. 3 root root 17 May 23 10:57 mounts-rw-r--r--. 1 root root 76 May 23 10:57 -rw-r--r--. 1 root root 71 May 23 10:57 #查看访问⽇志[root@ansible-server 71beefd3446a4db2cf316c5ca6611256fd77a3e49494e89838c59e520ebfac4c]# tail71beef{"log":"98.142.138.176 - - [23/May/2019:02:59:08 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"","stream":"stdout","time":"2019-05-23T02:59:08.9258795Z"}{"log":"2019/05/23 02:59:09 [error] 6#6: *2 open() "/usr/share/nginx/html/" failed (2: No such file ordirectory), client: 98.142.138.176, server: localhost, request: "GET / HTTP/1.1", host: "59.47.71.229:8080",referrer: "59.47.71.229:8080/"","stream":"stdout","time":"2019-05-23T02:59:09.7594971Z"}{"log":"98.142.138.176 - - [23/May/2019:02:59:09 +0000] "GET / HTTP/1.1" 404 556"59.47.71.229:8080/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/74.0.3729.169 Safari/537.36" "-"","stream":"stdout","time":"2019-05-23T02:59:09.7595791Z"}{"log":"98.142.138.176 - - [23/May/2019:03:08:10 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"","stream":"stdout","time":"2019-05-23T03:08:10.0499976Z"}{"log":"98.142.138.176 - - [23/May/2019:03:08:12 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"","stream":"stdout","time":"2019-05-23T03:08:12.8716702Z"}{"log":"98.142.138.176 - - [23/May/2019:03:08:15 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"","stream":"stdout","time":"2019-05-23T03:08:15.1182369Z"}3.7、--restart=always:指的是服务退出,始终会重启容器#清理所有容器[root@ansible-server ~]# docker stop $(docker ps -a -q);docker rm $(docker ps -a -q)4aff4bb376ddeb53d76f477827080338dabbd5ee27264bd3b8ecef224d294aff4bb376ddeb53d76f477827080338dabbd5ee27264bd3b8ecef224d29#删除所有镜像[root@ansible-server ~]# docker rmi $(docker images -q)#运⾏容器(--restart=always:指的是服务退出,始终会重启容器)[root@ansible-server ~]# docker container run -itd -p 8080:80 --name nginx02 --restart=always nginx1372e859b8e8bff473f2d242a50e0f51f96dabd325800ae3504aabf3e041af55#查看容器[root@ansible-server ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1372e859b8e8 nginx "nginx -g 'daemon of…" 5 seconds ago Up 3 seconds 0.0.0.0:8080->80/tcp nginx023.8、限制容器使⽤CPU资源[root@ansible-server ~]# docker container run -itd --cpus 1 --name nginx01 nginx[root@ansible-server ~]# docker container run -itd --cpus 1 --name nginx01 nginx2d801ef7a76d913124b77e42d14da6722d138501600d076beec1a734642dbf99[root@ansible-server ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES2d801ef7a76d nginx "nginx -g 'daemon of…" 6 seconds ago Up 4 seconds 80/tcp nginx013.9、限制内存使⽤率[root@ansible-server ~]# docker container run -itd --memory 512m --name nginx02 nginxea65f58c0e55a38019480c4c75a76e71ee129d310e279e5adea73ac792f1a04e[root@ansible-server ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESea65f58c0e55 nginx "nginx -g 'daemon of…" 8 seconds ago Up 5 seconds 80/tcp nginx022d801ef7a76d nginx "nginx -g 'daemon of…" 4 minutes ago Up 4 minutes 80/tcp n4.0、查看容器资源利⽤率[root@ansible-server ~]# docker container stats nginx02CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDSea65f58c0e55 nginx02 0.00% 1.359MiB / 512MiB 0.27% 648B / 0B 0B / 0B 2CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDSea65f58c0e55 nginx02 0.00% 1.359MiB / 512MiB 0.27% 648B / 0B 0B / 0B 2CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDSea65f58c0e55 nginx02 0.00% 1.359MiB / 512MiB 0.27% 648B / 0B 0B / 0B 2CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDSea65f58c0e55 nginx02 0.00% 1.359MiB / 512MiB 0.27% 648B / 0B 0B / 0B 2CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDSea65f58c0e55 nginx02 0.00% 1.359MiB / 512MiB 0.27% 648B / 0B 0B / 0B 2CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDSea65f58c0e55 nginx02 0.00% 1.359MiB / 512MiB 0.27% 648B / 0B 0B / 0B 24.1、 查看所有容器IP地址[root@ansible-server ~]# docker inspect --format='{{.Name}} - {{range .ks}}{{.IPAddress}}{{end}}'$(docker ps -aq)/composelnmp_nginx_1 -/thirsty_ptolemy - 172.17.0.3/composelnmp_php_1 - 172.22.0.2/composelnmp_mysql_1 - 172.22.0.3/grafana - 172.23.0.4/cadvisor - 172.23.0.3/influxdb - 172.23.0.2
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688593529a153175.html
评论列表(0条)