显示版本信息

  1. [root@localhost /]# docker version
  1. Client: Docker Engine - Community
  2. Version: 20.10.7
  3. API version: 1.41
  4. Go version: go1.13.15
  5. Git commit: f0df350
  6. Built: Wed Jun 2 11:56:24 2021
  7. OS/Arch: linux/amd64
  8. Context: default
  9. Experimental: true
  10. Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

显示系统信息,包括镜像和容器的数量

  1. docker info
  1. Client:
  2. Context: default
  3. Debug Mode: false
  4. Plugins:
  5. app: Docker App (Docker Inc., v0.9.1-beta3)
  6. buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
  7. scan: Docker Scan (Docker Inc., v0.8.0)
  8. Server:
  9. ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  10. errors pretty printing info

帮助命令

  1. docker 命令 --help # 万能命令
  1. Client: Docker Engine - Community
  2. Version: 20.10.7
  3. API version: 1.41
  4. Go version: go1.13.15
  5. Git commit: f0df350
  6. Built: Wed Jun 2 11:56:24 2021
  7. OS/Arch: linux/amd64
  8. Context: default
  9. Experimental: true
  10. Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  11. [root@localhost /]# ^C
  12. [root@localhost /]# docker info
  13. Client:
  14. Context: default
  15. Debug Mode: false
  16. Plugins:
  17. app: Docker App (Docker Inc., v0.9.1-beta3)
  18. buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
  19. scan: Docker Scan (Docker Inc., v0.8.0)
  20. Server:
  21. ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  22. errors pretty printing info
  23. [root@localhost /]# docker --help
  24. Usage: docker [OPTIONS] COMMAND
  25. A self-sufficient runtime for containers
  26. Options:
  27. --config string Location of client config files (default "/root/.docker")
  28. -c, --context string Name of the context to use to connect to the daemon (overrides
  29. DOCKER_HOST env var and default context set with "docker context use")
  30. -D, --debug Enable debug mode
  31. -H, --host list Daemon socket(s) to connect to
  32. -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal")
  33. (default "info")
  34. --tls Use TLS; implied by --tlsverify
  35. --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
  36. --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
  37. --tlskey string Path to TLS key file (default "/root/.docker/key.pem")
  38. --tlsverify Use TLS and verify the remote
  39. -v, --version Print version information and quit
  40. Management Commands:
  41. app* Docker App (Docker Inc., v0.9.1-beta3)
  42. builder Manage builds
  43. buildx* Build with BuildKit (Docker Inc., v0.5.1-docker)
  44. config Manage Docker configs
  45. container Manage containers
  46. context Manage contexts
  47. image Manage images
  48. manifest Manage Docker image manifests and manifest lists
  49. network Manage networks
  50. node Manage Swarm nodes
  51. plugin Manage plugins
  52. scan* Docker Scan (Docker Inc., v0.8.0)
  53. secret Manage Docker secrets
  54. service Manage services
  55. stack Manage Docker stacks
  56. swarm Manage Swarm
  57. system Manage Docker
  58. trust Manage trust on Docker images
  59. volume Manage volumes
  60. Commands:
  61. attach Attach local standard input, output, and error streams to a running container
  62. build Build an image from a Dockerfile
  63. commit Create a new image from a container's changes
  64. cp Copy files/folders between a container and the local filesystem
  65. create Create a new container
  66. diff Inspect changes to files or directories on a container's filesystem
  67. events Get real time events from the server
  68. exec Run a command in a running container
  69. export Export a container's filesystem as a tar archive
  70. history Show the history of an image
  71. images List images
  72. import Import the contents from a tarball to create a filesystem image
  73. info Display system-wide information
  74. inspect Return low-level information on Docker objects
  75. kill Kill one or more running containers
  76. load Load an image from a tar archive or STDIN
  77. login Log in to a Docker registry
  78. logout Log out from a Docker registry
  79. logs Fetch the logs of a container
  80. pause Pause all processes within one or more containers
  81. port List port mappings or a specific mapping for the container
  82. ps List containers
  83. pull Pull an image or a repository from a registry
  84. push Push an image or a repository to a registry
  85. rename Rename a container
  86. restart Restart one or more containers
  87. rm Remove one or more containers
  88. rmi Remove one or more images
  89. run Run a command in a new container
  90. save Save one or more images to a tar archive (streamed to STDOUT by default)
  91. search Search the Docker Hub for images
  92. start Start one or more stopped containers
  93. stats Display a live stream of container(s) resource usage statistics
  94. stop Stop one or more running containers
  95. tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  96. top Display the running processes of a container
  97. unpause Unpause all processes within one or more containers
  98. update Update configuration of one or more containers
  99. version Show the Docker version information
  100. wait Block until one or more containers stop, then print their exit codes
  101. Run 'docker COMMAND --help' for more information on a command.
  102. To get more help with docker, check out our guides at https://docs.docker.com/go/guides/

帮助文档的命令:https://docs.docker.com/get-started/

镜像命令

docker images 查看所有本地镜像

  1. [root@localhost /]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. hello-world latest d1165f221234 4 months ago 13.3kB
  4. # 解释
  5. REPOSITORY 镜像的仓库源
  6. TAG 镜像的标签
  7. IMAGE ID 镜像的ID
  8. CREATED 镜像的创建时间
  9. SIZE 镜像的大小
  10. # 可选项
  11. -a, --all # 列出所有镜像
  12. --digests Show digests
  13. -f, --filter filter Filter output based on conditions provided
  14. --format string Pretty-print images using a Go template
  15. --no-trunc Don't truncate output
  16. -q, --quiet # 只显示镜像的ID

docker search 搜索镜像

  1. [root@localhost /]# docker search mysql
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. mysql MySQL is a widely used, open-source relation 11185 [OK]
  4. mariadb MariaDB Server is a high performing open sou 4246 [OK]
  5. # 可选项,通过搜藏来过滤
  6. -f, --filter=STARS=3000 # 搜索出来的镜像就是STARS大于3000的
  7. [root@localhost /]# docker search mysql --filter=STARS=3000
  8. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  9. mysql MySQL is a widely used, open-source relation 11185 [OK]
  10. mariadb MariaDB Server is a high performing open sou 4246 [OK]
  11. [root@localhost /]# docker search mysql --filter=STARS=5000
  12. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  13. mysql MySQL is a widely used, open-source relation 11185 [OK]

docker pull 下载镜像

  1. # 下载镜像 docker pull 镜像名:[:tag]
  2. [root@localhost /]# docker pull --help
  3. Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  4. Pull an image or a repository from a registry
  5. Options:
  6. -a, --all-tags Download all tagged images in the repository
  7. --disable-content-trust Skip image verification (default true)
  8. --platform string Set platform if server is multi-platform capable
  9. -q, --quiet Suppress verbose output
  10. # 下载mysql镜像
  11. [root@localhost /]# docker pull mysql
  12. Using default tag: latest # 如果不写 tag,默认就是latest
  13. latest: Pulling from library/mysql
  14. 33847f680f63: Pull complete # 分层下载,docker image的核心 联合文件系统
  15. 5cb67864e624: Pull complete
  16. 1a2b594783f5: Pull complete
  17. b30e406dd925: Pull complete
  18. 48901e306e4c: Pull complete
  19. 603d2b7147fd: Pull complete
  20. 802aa684c1c4: Pull complete
  21. 715d3c143a06: Pull complete
  22. 6978e1b7a511: Pull complete
  23. f0d78b0ac1be: Pull complete
  24. 35a94d251ed1: Pull complete
  25. 36f75719b1a9: Pull complete
  26. Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd # 签名
  27. Status: Downloaded newer image for mysql:latest
  28. docker.io/library/mysql:latest # 真实地址
  29. # 等价于他
  30. docker pull mysql
  31. docker.io/library/mysql:latest
  32. # 指定版本下载
  33. [root@localhost /]# docker pull mysql:5.7
  34. 5.7: Pulling from library/mysql
  35. 33847f680f63: Already exists
  36. 5cb67864e624: Already exists
  37. 1a2b594783f5: Already exists
  38. b30e406dd925: Already exists
  39. 48901e306e4c: Already exists
  40. 603d2b7147fd: Already exists
  41. 802aa684c1c4: Already exists
  42. 5b5a19178915: Pull complete
  43. f9ce7411c6e4: Pull complete
  44. f51f6977d9b2: Pull complete
  45. aeb6b16ce012: Pull complete
  46. Digest: sha256:be70d18aedc37927293e7947c8de41ae6490ecd4c79df1db40d1b5b5af7d9596
  47. Status: Downloaded newer image for mysql:5.7
  48. docker.io/library/mysql:5.7

docker rmi 删除镜像

  1. # 删除指定的容器
  2. docker rmi -f 容器id
  3. docker rmi -f 容器id 容器id 容器id 容器id # 删除多个容器
  4. [root@localhost /]# docker rmi -f 8cf625070931
  5. Untagged: mysql:5.7
  6. Untagged: mysql@sha256:be70d18aedc37927293e7947c8de41ae6490ecd4c79df1db40d1b5b5af7d9596
  7. Deleted: sha256:8cf6250709314f2fcd2669e8643f5d3bdebfe715bddb63990c8c96e5d261d6fc
  8. Deleted: sha256:452fe6896278c26338d547f8d1092011d923785247c46629b374d3477fe28c84
  9. Deleted: sha256:bd40bf60af5d06e6b93eaf5a648393d97f70998faa3bfa1b85af55b5a270cb35
  10. Deleted: sha256:c43e9e7d1e833650e0ed54be969d6410efa4e7fa6e27a236a44a2b97e412ee93
  11. Deleted: sha256:70f18560bbf492ddb2eadbc511c58c4d01e51e8f5af237e3dbb319632f16335b
  12. # 删除全部容器
  13. [root@localhost /]# docker rmi -f $(docker images -aq)
  14. Untagged: mysql:latest
  15. Untagged: mysql@sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
  16. Deleted: sha256:c60d96bd2b771a8e3cae776e02e55ae914a6641139d963defeb3c93388f61707
  17. Deleted: sha256:5c8c91273faab368a6d659156f2569fa9f40b0e0139222fdf9eef073df4b3797
  18. Deleted: sha256:33d8196a776f42a16f10395b66f10f91443b1fb194bca2a9b8dfb0deff5babb8
  19. Deleted: sha256:3ec63323025213e3cabf17ac7933506dc5520ec49226a9764418f77ea60d35c8
  20. Deleted: sha256:1f129b005b51b049ac84ed0775b82096d480b7d9308a9a137697f37346562266
  21. Deleted: sha256:80ed209bd0434faa1ce31fbaab8508124dddf8f6502c5736ee4b8e46697a8477
  22. Deleted: sha256:e53f0d35c77064014a5c1c1332d84d5f421a58418ca9c208bc470691c0e483e3
  23. Deleted: sha256:75209fb28131d5537e73406ff0f6f508f3eb1f4d86c43d1d16df76fd28b9cc35
  24. Deleted: sha256:34a01bee1a62a01034ffc3da48a3cb45716a0cf2e264c26663e02288e81c7ec2
  25. Deleted: sha256:9f8bca37a56017fd3462d4fc329b0b20f97c2dd4c15e55a8e6ad1c023ab5552b
  26. Deleted: sha256:c8a6e3f9a2412c28cd8c48e2c7bed5e7fbaa0ab6649add2dbe8641cb29b967f6
  27. Deleted: sha256:0a26eacdbd862e75d064d817e8a5bcf5e060c2680c10f77ffa52757c0b8c3328
  28. Deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
  29. Untagged: hello-world:latest
  30. Untagged: hello-world@sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
  31. Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726

容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习

  1. docker pull centos

新建容器并启动

  1. docker run [可选参数] image
  2. # 参数说明
  3. --name="Name" 容器名字 tomcat01 tomcat02 tomcat03,用来区分容器
  4. -d 后台方式运行
  5. -it 使用交互方式运行,进入容器查看内容
  6. -P 指定容器的端口 -P 8080:8080
  7. -P ip:主机端口:容器端口
  8. -P 主机端口:容器端口(常用)
  9. -p 容器端口
  10. 容器端口
  11. -p 随机指定端口
  12. # 测试,启动并进入容器
  13. [root@localhost /]# docker run -it centos /bin/bash
  14. [root@ae745412f8d3 /]#
  15. [root@ae745412f8d3 /]# ls # 查看容器内的centos,基础版本,很多命令都是不完善的!
  16. bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
  17. # 从容器中退回主机
  18. [root@ae745412f8d3 /]# exit
  19. exit
  20. [root@localhost /]# ls
  21. bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

列出所有的运行的容器

  1. # docker ps 命令
  2. # 列出当前正在运行的容器
  3. -a # 列出当前正在运行的容器+带出历史运行过的容器
  4. -n=? # 显示最近创建的容器
  5. -q # 只显示容器的编号
  6. [root@localhost /]# docker ps
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. [root@localhost /]# docker ps -a
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. ae745412f8d3 centos "/bin/bash" 4 minutes ago Exited (0) 2 minutes ago pedantic_wilson
  11. 6feaef90848f d1165f221234 "/hello" 11 hours ago Exited (0) 11 hours ago zealous_wilson
  12. c1a3be882770 d1165f221234 "/hello" 11 hours ago Exited (0) 11 hours ago busy_dhawan
  13. [root@localhost /]# docker ps -a -n=1
  14. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  15. ae745412f8d3 centos "/bin/bash" 58 minutes ago Exited (0) 55 minutes ago pedantic_wilson
  16. [root@localhost /]# docker ps -aq
  17. ae745412f8d3
  18. 6feaef90848f
  19. c1a3be882770

退出容器

  1. exit # 直接容器停止并推出
  2. Ctrl + P + Q # 容器不停止退出

删除容器

  1. docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f
  2. docker rm -f $(docker ps -aq) # 删除所有的容器
  3. docker ps -a -q|xargs docker rm # 删除所有的容器

启动和停止容器的操作

  1. docker start 容器id # 启动容器
  2. docker restart 容器id # 重启容器
  3. docker stop 容器id # 停止当前正在运行的容器
  4. docker kill 容器id # 强制停止当前容器

常用的其他命令

后台启动容器

  1. # 命令 docker run -d 镜像名!
  2. [root@localhost /]# docker run -d centos
  3. f0093804c5ca4b7a6b02db6e6813647d56433bba749addc56eed304075939796
  4. # 问题docker ps,发现 centos 停止了
  5. # 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
  6. # nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志

  1. [root@localhost /]# docker logs --help
  2. Usage: docker logs [OPTIONS] CONTAINER
  3. Fetch the logs of a container
  4. Options:
  5. --details Show extra details provided to logs
  6. -f, --follow Follow log output
  7. --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  8. -n, --tail string Number of lines to show from the end of the logs (default "all")
  9. -t, --timestamps Show timestamps
  10. --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  1. docker logs -f -t --tail 容器,没有日志
  2. # 自己编写一段shell脚本(死循环)
  3. [root@localhost /]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"
  4. # 显示日志
  5. -tf # 显示日志
  6. --tail number # 要显示的日志条数
  7. [root@localhost /]# docker logs -f -t --tail 10 e3dfc6732bc3

查看容器中的进程信息

  1. # 命令 docker top 容器id
  2. [root@localhost /]# docker top 102c10d0d4f2
  3. UID PID PPID C STIME TTY TIME
  4. root 13552 13533 0 23:14 pts/0 00:00:00

查看镜像的元数据

  1. # 命令
  2. docker inspect 容器id
  3. # 测试
  4. [root@localhost /]# docker inspect 102c10d0d4f2
  5. [
  6. {
  7. "Id": "102c10d0d4f2599eaa77174a773014724f0bfdd1677035dcd329ebeb956122d1",
  8. "Created": "2021-07-29T06:14:31.270311218Z",
  9. "Path": "/bin/bash",
  10. "Args": [],
  11. "State": {
  12. "Status": "running",
  13. "Running": true,
  14. "Paused": false,
  15. "Restarting": false,
  16. "OOMKilled": false,
  17. "Dead": false,
  18. "Pid": 13552,
  19. "ExitCode": 0,
  20. "Error": "",
  21. "StartedAt": "2021-07-29T06:14:33.742690109Z",
  22. "FinishedAt": "0001-01-01T00:00:00Z"
  23. },
  24. "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
  25. "ResolvConfPath": "/var/lib/docker/containers/102c10d0d4f2599eaa77174a773014724f0bfdd1677035dcd329ebeb956122d1/resolv.conf",
  26. "HostnamePath": "/var/lib/docker/containers/102c10d0d4f2599eaa77174a773014724f0bfdd1677035dcd329ebeb956122d1/hostname",
  27. "HostsPath": "/var/lib/docker/containers/102c10d0d4f2599eaa77174a773014724f0bfdd1677035dcd329ebeb956122d1/hosts",
  28. "LogPath": "/var/lib/docker/containers/102c10d0d4f2599eaa77174a773014724f0bfdd1677035dcd329ebeb956122d1/102c10d0d4f2599eaa77174a773014724f0bfdd1677035dcd329ebeb956122d1-json.log",
  29. "Name": "/suspicious_mirzakhani",
  30. "RestartCount": 0,
  31. "Driver": "overlay2",
  32. "Platform": "linux",
  33. "MountLabel": "",
  34. "ProcessLabel": "",
  35. "AppArmorProfile": "",
  36. "ExecIDs": null,
  37. "HostConfig": {
  38. "Binds": null,
  39. "ContainerIDFile": "",
  40. "LogConfig": {
  41. "Type": "json-file",
  42. "Config": {}
  43. },
  44. "NetworkMode": "default",
  45. "PortBindings": {},
  46. "RestartPolicy": {
  47. "Name": "no",
  48. "MaximumRetryCount": 0
  49. },
  50. "AutoRemove": false,
  51. "VolumeDriver": "",
  52. "VolumesFrom": null,
  53. "CapAdd": null,
  54. "CapDrop": null,
  55. "CgroupnsMode": "host",
  56. "Dns": [],
  57. "DnsOptions": [],
  58. "DnsSearch": [],
  59. "ExtraHosts": null,
  60. "GroupAdd": null,
  61. "IpcMode": "private",
  62. "Cgroup": "",
  63. "Links": null,
  64. "OomScoreAdj": 0,
  65. "PidMode": "",
  66. "Privileged": false,
  67. "PublishAllPorts": false,
  68. "ReadonlyRootfs": false,
  69. "SecurityOpt": null,
  70. "UTSMode": "",
  71. "UsernsMode": "",
  72. "ShmSize": 67108864,
  73. "Runtime": "runc",
  74. "ConsoleSize": [
  75. 0,
  76. 0
  77. ],
  78. "Isolation": "",
  79. "CpuShares": 0,
  80. "Memory": 0,
  81. "NanoCpus": 0,
  82. "CgroupParent": "",
  83. "BlkioWeight": 0,
  84. "BlkioWeightDevice": [],
  85. "BlkioDeviceReadBps": null,
  86. "BlkioDeviceWriteBps": null,
  87. "BlkioDeviceReadIOps": null,
  88. "BlkioDeviceWriteIOps": null,
  89. "CpuPeriod": 0,
  90. "CpuQuota": 0,
  91. "CpuRealtimePeriod": 0,
  92. "CpuRealtimeRuntime": 0,
  93. "CpusetCpus": "",
  94. "CpusetMems": "",
  95. "Devices": [],
  96. "DeviceCgroupRules": null,
  97. "DeviceRequests": null,
  98. "KernelMemory": 0,
  99. "KernelMemoryTCP": 0,
  100. "MemoryReservation": 0,
  101. "MemorySwap": 0,
  102. "MemorySwappiness": null,
  103. "OomKillDisable": false,
  104. "PidsLimit": null,
  105. "Ulimits": null,
  106. "CpuCount": 0,
  107. "CpuPercent": 0,
  108. "IOMaximumIOps": 0,
  109. "IOMaximumBandwidth": 0,
  110. "MaskedPaths": [
  111. "/proc/asound",
  112. "/proc/acpi",
  113. "/proc/kcore",
  114. "/proc/keys",
  115. "/proc/latency_stats",
  116. "/proc/timer_list",
  117. "/proc/timer_stats",
  118. "/proc/sched_debug",
  119. "/proc/scsi",
  120. "/sys/firmware"
  121. ],
  122. "ReadonlyPaths": [
  123. "/proc/bus",
  124. "/proc/fs",
  125. "/proc/irq",
  126. "/proc/sys",
  127. "/proc/sysrq-trigger"
  128. ]
  129. },
  130. "GraphDriver": {
  131. "Data": {
  132. "LowerDir": "/var/lib/docker/overlay2/8c86695a5ecdf7cfb35864785cf263afccc80ce7dc5f6faebeecff0975ac4356-init/diff:/var/lib/docker/overlay2/d7560a21a30dffefccb01a59befd23ddd048a6915bbbba8b0590d56ae257035f/diff",
  133. "MergedDir": "/var/lib/docker/overlay2/8c86695a5ecdf7cfb35864785cf263afccc80ce7dc5f6faebeecff0975ac4356/merged",
  134. "UpperDir": "/var/lib/docker/overlay2/8c86695a5ecdf7cfb35864785cf263afccc80ce7dc5f6faebeecff0975ac4356/diff",
  135. "WorkDir": "/var/lib/docker/overlay2/8c86695a5ecdf7cfb35864785cf263afccc80ce7dc5f6faebeecff0975ac4356/work"
  136. },
  137. "Name": "overlay2"
  138. },
  139. "Mounts": [],
  140. "Config": {
  141. "Hostname": "102c10d0d4f2",
  142. "Domainname": "",
  143. "User": "",
  144. "AttachStdin": true,
  145. "AttachStdout": true,
  146. "AttachStderr": true,
  147. "Tty": true,
  148. "OpenStdin": true,
  149. "StdinOnce": true,
  150. "Env": [
  151. "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  152. ],
  153. "Cmd": [
  154. "/bin/bash"
  155. ],
  156. "Image": "centos",
  157. "Volumes": null,
  158. "WorkingDir": "",
  159. "Entrypoint": null,
  160. "OnBuild": null,
  161. "Labels": {
  162. "org.label-schema.build-date": "20201204",
  163. "org.label-schema.license": "GPLv2",
  164. "org.label-schema.name": "CentOS Base Image",
  165. "org.label-schema.schema-version": "1.0",
  166. "org.label-schema.vendor": "CentOS"
  167. }
  168. },
  169. "NetworkSettings": {
  170. "Bridge": "",
  171. "SandboxID": "38f85ea759843f4d9c1f6b43c1ec76b818279640e6c01a6e4d42db4f013e9658",
  172. "HairpinMode": false,
  173. "LinkLocalIPv6Address": "",
  174. "LinkLocalIPv6PrefixLen": 0,
  175. "Ports": {},
  176. "SandboxKey": "/var/run/docker/netns/38f85ea75984",
  177. "SecondaryIPAddresses": null,
  178. "SecondaryIPv6Addresses": null,
  179. "EndpointID": "738b96ae00264b74f65494142e7b53e82342a2b3e87a2d5e883becb748cdf628",
  180. "Gateway": "172.17.0.1",
  181. "GlobalIPv6Address": "",
  182. "GlobalIPv6PrefixLen": 0,
  183. "IPAddress": "172.17.0.2",
  184. "IPPrefixLen": 16,
  185. "IPv6Gateway": "",
  186. "MacAddress": "02:42:ac:11:00:02",
  187. "Networks": {
  188. "bridge": {
  189. "IPAMConfig": null,
  190. "Links": null,
  191. "Aliases": null,
  192. "NetworkID": "ac8e073e6e8b99df0d475b2f93e571f2924065d5283d64a5225f3747f0d260b7",
  193. "EndpointID": "738b96ae00264b74f65494142e7b53e82342a2b3e87a2d5e883becb748cdf628",
  194. "Gateway": "172.17.0.1",
  195. "IPAddress": "172.17.0.2",
  196. "IPPrefixLen": 16,
  197. "IPv6Gateway": "",
  198. "GlobalIPv6Address": "",
  199. "GlobalIPv6PrefixLen": 0,
  200. "MacAddress": "02:42:ac:11:00:02",
  201. "DriverOpts": null
  202. }
  203. }
  204. }
  205. }
  206. ]

进入当前正在运行的容器

  1. # 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
  2. # 方式一
  3. docker exec -it 容器id bashShell
  4. # 测试
  5. [root@localhost /]# docker ps
  6. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  7. 102c10d0d4f2 centos "/bin/bash" 29 minutes ago Up 29 minutes suspicious_mirzakhani
  8. [root@localhost /]# docker exec -it 102c10d0d4f2 /bin/bash
  9. [root@102c10d0d4f2 /]# ls
  10. bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
  11. [root@102c10d0d4f2 /]# ps -ef
  12. UID PID PPID C STIME TTY TIME CMD
  13. root 1 0 0 06:14 pts/0 00:00:00 /bin/bash
  14. root 15 0 0 06:44 pts/1 00:00:00 /bin/bash
  15. root 31 15 0 06:45 pts/1 00:00:00 ps -ef
  16. # 方式二
  17. docker attach 容器id
  18. # 测试
  19. [root@localhost /]# docker attach 8c785c3eb783
  20. 正在执行当前的代码...
  21. # docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用)
  22. # docker attach # 进入容器正在执行的终端,不会启动新的进程!

从容器内拷贝文件到主机上

  1. docker cp 容器id:容器内路径 目的主机路径
  2. # 查看当前主机目录下
  3. [root@localhost home]# docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 8c785c3eb783 centos "/bin/bash" 11 minutes ago Up 10 minutes dreamy_meninsky
  6. # 进入docker容器内部
  7. [root@localhost home]# docker attach 8c785c3eb783
  8. [root@8c785c3eb783 /]# cd /home
  9. [root@8c785c3eb783 home]# ls
  10. # 容器内新建一个文件
  11. [root@8c785c3eb783 home]# touch test.java
  12. [root@8c785c3eb783 home]# ls
  13. test.java
  14. [root@8c785c3eb783 home]# exit
  15. exit
  16. [root@localhost home]#
  17. [root@localhost home]#
  18. [root@localhost home]# docker ps -a
  19. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  20. 8c785c3eb783 centos "/bin/bash" 12 minutes ago Exited (0) 11 seconds ago dreamy_meninsky
  21. 102c10d0d4f2 centos "/bin/bash" 47 minutes ago Exited (0) 14 minutes ago suspicious_mirzakhani
  22. e3dfc6732bc3 centos "/bin/sh -c 'while t…" 2 hours ago Exited (137) 2 hours ago affectionate_buck
  23. 657249b7f2ac centos "/bin/sh -c 'while t…" 2 hours ago Exited (0) 2 hours ago jovial_brown
  24. 2493f28b9e22 centos "/bin/sh -c 'while t…" 2 hours ago Exited (0) 2 hours ago unruffled_hawking
  25. f1909aca4b54 centos "/bin/sh -C 'while t…" 2 hours ago Exited (127) 2 hours ago quizzical_mendel
  26. d0fb827d3f46 centos "/bin/sh -C 'while t…" 2 hours ago Exited (127) 2 hours ago adoring_goldstine
  27. 04ad1ea1c7c9 centos "/bin/bash" 2 hours ago Exited (0) 2 hours ago beautiful_newton
  28. f0093804c5ca centos "/bin/bash" 2 hours ago Exited (0) 2 hours ago optimistic_knuth
  29. e0d4e160dc9b centos "/bin/bash" 2 hours ago Exited (0) 2 hours ago stoic_villani
  30. d34c527bc2ea centos "/bin/bash" 3 hours ago Exited (0) 2 hours ago upbeat_hopper
  31. e9d82a4f8e41 centos "/bin/bash" 3 hours ago Exited (0) 3 hours ago laughing_roentgen
  32. ae745412f8d3 centos "/bin/bash" 4 hours ago Exited (0) 4 hours ago pedantic_wilson
  33. 6feaef90848f d1165f221234 "/hello" 15 hours ago Exited (0) 15 hours ago zealous_wilson
  34. c1a3be882770 d1165f221234 "/hello" 15 hours ago Exited (0) 15 hours ago busy_dhawan
  35. # 将文件拷贝出来到主机上
  36. [root@localhost home]# docker cp 8c785c3eb783:/home/test.java /home
  37. [root@localhost home]#
  38. [root@localhost home]#
  39. [root@localhost home]# ls
  40. admin kuangshen.java test.java
  41. # 拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现,自动同步

学习方式:将我的所有命令全部敲一遍,自己记录笔记!

小结

Docker的常用命令 - 图2

docker command

  1. $ sudo docker # docker 命令帮助
  2. Commands:
  3. attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像
  4. build Build an image from a Dockerfile # 通过 Dockerfile 定制镜像
  5. commit Create a new image from a container's changes # 提交当前容器为新的镜像
  6. cp Copy files/folders from the containers filesystem to the host path # 从容器中拷贝指定文件或者目录到宿主机中
  7. create Create a new container # 创建一个新的容器,同 run,但不启动容器
  8. diff Inspect changes on a container's filesystem # 查看 docker 容器变化
  9. events Get real time events from the server # 从 docker 服务获取容器实时事件
  10. exec Run a command in an existing container # 在已存在的容器上运行命令
  11. export Stream the contents of a container as a tar archive # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
  12. history Show the history of an image # 展示一个镜像形成历史
  13. images List images # 列出系统当前镜像
  14. import Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应 export]
  15. info Display system-wide information # 显示系统相关信息
  16. inspect Return low-level information on a container # 查看容器详细信息
  17. kill Kill a running container # kill 指定 docker 容器
  18. load Load an image from a tar archive # 从一个 tar 包中加载一个镜像[对应 save]
  19. login Register or Login to the docker registry server # 注册或者登陆一个 docker 源服务器
  20. logout Log out from a Docker registry server # 从当前 Docker registry 退出
  21. logs Fetch the logs of a container # 输出当前容器日志信息
  22. port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT # 查看映射端口对应的容器内部源端口
  23. pause Pause all processes within a container # 暂停容器
  24. ps List containers # 列出容器列表
  25. pull Pull an image or a repository from the docker registry server # 从docker镜像源服务器拉取指定镜像或者库镜像
  26. push Push an image or a repository to the docker registry server # 推送指定镜像或者库镜像至docker源服务器
  27. restart Restart a running container # 重启运行的容器
  28. rm Remove one or more containers # 移除一个或者多个容器
  29. rmi Remove one or more images # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
  30. run Run a command in a new container # 创建一个新的容器并运行一个命令
  31. save Save an image to a tar archive # 保存一个镜像为一个 tar 包[对应 load]
  32. search Search for an image on the Docker Hub # 在 docker hub 中搜索镜像
  33. start Start a stopped containers # 启动容器
  34. stop Stop a running containers # 停止容器
  35. tag Tag an image into a repository # 给源中镜像打标签
  36. top Lookup the running processes of a container # 查看容器中运行的进程信息
  37. unpause Unpause a paused container # 取消暂停容器
  38. version Show the docker version information # 查看 docker 版本号
  39. wait Block until a container stops, then print its exit code # 截取容器停止时的退出状态值
  40. Run 'docker COMMAND --help' for more information on a command.

docker的命令是十分多的,上面我们学习的那些都是最常用的容器和镜像的命令之后,之后我们还会学习很多命令!
接下来就是一堆的练习

作业联系

Docker安装Nginx

  1. # 提示
  2. # 1、搜索镜像 search 建议大家去docker hub搜索,可以看到帮助文档
  3. # 2、下载镜像 docker pull nginx
  4. # 3、运行测试
  5. [root@localhost /]# docker pull nginx
  6. Using default tag: latest
  7. latest: Pulling from library/nginx
  8. Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
  9. Status: Image is up to date for nginx:latest
  10. docker.io/library/nginx:latest
  11. [root@localhost /]# docker ps
  12. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  13. [root@localhost /]# docker run --name nginx -p 80:80 -d nginx
  14. 75aa365f4dacb0511c1a1f0d954103dab86ec412cddaa0c2eea1bf3f33a018be
  15. # 查看运行状态
  16. [root@localhost /]# docker ps
  17. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  18. 75aa365f4dac nginx "/docker-entrypoint.…" 6 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
  19. # 测试服务的80端口是否运行
  20. [root@localhost /]# curl localhost:80
  21. <!DOCTYPE html>
  22. <html>
  23. <head>
  24. <title>Welcome to nginx!</title>
  25. <style>
  26. body {
  27. width: 35em;
  28. margin: 0 auto;
  29. font-family: Tahoma, Verdana, Arial, sans-serif;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <h1>Welcome to nginx!</h1>
  35. <p>If you see this page, the nginx web server is successfully installed and
  36. working. Further configuration is required.</p>
  37. <p>For online documentation and support please refer to
  38. <a href="http://nginx.org/">nginx.org</a>.<br/>
  39. Commercial support is available at
  40. <a href="http://nginx.com/">nginx.com</a>.</p>
  41. <p><em>Thank you for using nginx.</em></p>
  42. </body>
  43. </html>

image.png
这样就简单的把nginx启动了,但是我们想要改变配置文件nginx.conf ,进入容器,命令:
docker exec -it nginx bash

  1. 进入容器
  2. [root@localhost /]# docker exec -it nginx /bin/bash
  3. root@75aa365f4dac:/# ls
  4. bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
  5. boot docker-entrypoint.d etc lib media opt root sbin sys usr
  6. # 查询文件
  7. root@b33aefc76cd3:/# whereis nginx
  8. nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx

nginx.conf配置文件在 /etc/nginx/ 下面,但是你使用vim nginx.conf 或者vi nginx.conf
会发现vi或者vim命令没有用,解决办法:apt-get update 完成之后 apt-get install vim

  1. root@75aa365f4dac:/# ls
  2. bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
  3. boot docker-entrypoint.d etc lib media opt root sbin sys usr
  4. root@75aa365f4dac:/# cd /etc/nginx
  5. root@75aa365f4dac:/etc/nginx# ls
  6. conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
  7. root@75aa365f4dac:/etc/nginx# vim nginx.conf
  8. bash: vim: command not found

此时你就可以自己定制nginx.con文件了,改好配置文件之后重启容器,步骤,先把容器停了
docker stop nginx 然后重启 docker start nginx
这样不是很方便,还有第二种方式,挂载配置文件,就是把装有docker宿主机上面的nginx.conf配置文件映射到启动的nginx容器里面,这需要你首先准备好nginx.con配置文件,如果你应经准备好了,下一步是启动nginx
命令:docker run —name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
解释下上面的命令:
—name 给容器命名,以后可以使用这个名字启动或者停止容器
-p 映射端口,将docker宿主机的80端口和容器的80端口进行绑定
-v 挂载文件用的,第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,第二个表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面
第三个-v 表示的和第一个-v意思一样的。
-d 表示后台运行
我个人更喜欢第二种映射的方式,麻烦的是需要自己准备好nginx.conf 和default.conf文件,我是直接从容器里面复制的,然后根据自己的需要改的

Docker安装tomcat

  1. # 官方的使用
  2. docker run -it --rm tomcat
  3. # 我们之前的启动都是后台,停止了容器之后,容器还是可以查到 docker run -it --rm tomcat,一般用来测试,用完即删除
  4. # 下载再启动
  5. docker pull tomcat
  6. # 启动运行
  7. docker run --name tomcat -p 8080:8080 -d tomcat
  8. # 测试访问没有问题
  9. # 进入容器
  10. [root@localhost /]# docker exec -it tomcat /bin/bash
  11. # 发现问题:
  12. # 1、linux命令少了
  13. # 2、没有webapps 阿里云镜像的原因。默认是最小的镜像,所有不必要的都剔除掉。保证最小可运行环境
  14. root@88c3a5720ef9:/usr/local/tomcat# ls -al
  15. total 128
  16. drwxr-xr-x. 1 root root 30 Jul 23 09:46 .
  17. drwxr-xr-x. 1 root root 20 Jul 23 09:40 ..
  18. -rw-r--r--. 1 root root 18949 Jun 28 08:46 BUILDING.txt
  19. -rw-r--r--. 1 root root 6210 Jun 28 08:46 CONTRIBUTING.md
  20. -rw-r--r--. 1 root root 57092 Jun 28 08:46 LICENSE
  21. -rw-r--r--. 1 root root 2333 Jun 28 08:46 NOTICE
  22. -rw-r--r--. 1 root root 3372 Jun 28 08:46 README.md
  23. -rw-r--r--. 1 root root 6898 Jun 28 08:46 RELEASE-NOTES
  24. -rw-r--r--. 1 root root 16507 Jun 28 08:46 RUNNING.txt
  25. drwxr-xr-x. 2 root root 4096 Jul 23 09:46 bin
  26. drwxr-xr-x. 1 root root 22 Aug 2 03:29 conf
  27. drwxr-xr-x. 2 root root 4096 Jul 23 09:46 lib
  28. drwxrwxrwx. 1 root root 177 Aug 2 03:29 logs
  29. drwxr-xr-x. 2 root root 134 Jul 23 09:46 native-jni-lib
  30. drwxrwxrwx. 2 root root 30 Jul 23 09:46 temp
  31. drwxr-xr-x. 2 root root 6 Jul 23 09:46 webapps
  32. drwxr-xr-x. 7 root root 81 Jun 28 08:46 webapps.dist
  33. drwxrwxrwx. 2 root root 6 Jun 28 08:46 work
  34. # 查看webapps文件夹文件
  35. root@88c3a5720ef9:/usr/local/tomcat# cd webapps
  36. root@88c3a5720ef9:/usr/local/tomcat/webapps# ls
  37. root@88c3a5720ef9:/usr/local/tomcat/webapps# cd ..
  38. root@88c3a5720ef9:/usr/local/tomcat# ls
  39. BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
  40. CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
  41. root@88c3a5720ef9:/usr/local/tomcat# cd webapps.dist
  42. root@88c3a5720ef9:/usr/local/tomcat/webapps.dist# ls
  43. ROOT docs examples host-manager manager
  44. root@88c3a5720ef9:/usr/local/tomcat/webapps.dist# cd ..
  45. # 复制root文件
  46. root@88c3a5720ef9:/usr/local/tomcat# cp -r webapps.dist/* webapps
  47. root@88c3a5720ef9:/usr/local/tomcat# ls
  48. BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
  49. CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
  50. root@88c3a5720ef9:/usr/local/tomcat# cd webapps
  51. root@88c3a5720ef9:/usr/local/tomcat/webapps# ls
  52. ROOT docs examples host-manager manager

浏览器第一次访问截图
image.png
复制root文件后,浏览器第二次访问截图
image.png
思考问题:我们以后要部署项目,如果每次都要进入容器是不是十分麻烦?我要是可以在容器外提供一个映射路径,webapps,我们在外部放置项目就自动同步到内部就好了!

Docekr部署es+kibana

建议先关闭虚拟机,将内存设为4GB,处理器2*4,es太吃内存了。
image.png

  1. # es 暴露的端口很多!
  2. # es 十分的耗内存
  3. # es 的数据一般需要放置到安全目录!挂载
  4. # --net somenetwork ? 网络配置
  5. # 直接下载报错
  6. [root@localhost /]# docker pull kibana
  7. Using default tag: latest
  8. Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  9. # 指定版本号下载
  10. docker pull elasticsearch:7.13.4
  11. docker pull kibana:7.13.4
  12. # 启动 elasticsearch
  13. docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:latest
  14. # 启动之后linux就卡住了 docker stats 查看cpu的状态
  15. [root@localhost /]# docker stats
  16. CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
  17. a984c8218764 elasticsearch 0.39% 2.128GiB / 3.623GiB 58.73% 8.14kB / 4.08kB 306MB / 22.5kB 54
  18. # 赶紧关闭,增加内存的限制,修改配置文件 -e 环境配置修改

启动测试成功

  1. [root@localhost /]# curl localhost:9200
  2. {
  3. "name" : "Odn1GWj",
  4. "cluster_name" : "elasticsearch",
  5. "cluster_uuid" : "a1vh4AAvRYOf_VYmZ9iuKQ",
  6. "version" : {
  7. "number" : "5.6.12",
  8. "build_hash" : "cfe3d9f",
  9. "build_date" : "2018-09-10T20:12:43.732Z",
  10. "build_snapshot" : false,
  11. "lucene_version" : "6.6.1"
  12. },
  13. "tagline" : "You Know, for Search"
  14. }
  15. [root@localhost /]#

image.png
作业:使用kibana连接es?思考网络如何才能连接过去!
image.png

端口暴露的概念

image.png
思考问题:我们每次改动nginx配置文件,都需要进入容器内部?十分的麻烦,我要是可以在容器外部提供一个映射路径,达到在容器修改文件名,容器内部就可以自动修改?-v 数据卷!

可视化

portainer(先用这个)

  1. docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

Rancher(CI/CD再用)

什么是portainer?

Docekr图形化界面管理工具!提供一个后台面板供我们操作!

  1. docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

访问测试:http://192.168.192.129:8088
image.png

  1. [root@localhost /]# curl localhost:8088
  2. <!DOCTYPE html
  3. ><html lang="en" ng-app="portainer">
  4. <head>
  5. <meta charset="utf-8" />
  6. <title>Portainer</title>
  7. <meta name="description" content="" />
  8. <meta name="author" content="Portainer.io" />
  9. <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
  10. <!--[if lt IE 9]>
  11. <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
  12. <![endif]-->
  13. <!-- Fav and touch icons -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="dc4d092847be46242d8c013d1bc7c494.png" />
  15. <link rel="icon" type="image/png" sizes="32x32" href="5ba13dcb526292ae707310a54e103cd1.png" />
  16. <link rel="icon" type="image/png" sizes="16x16" href="f9508a64a1beb81be174e194573f7450.png" />
  17. <link rel="mask-icon" href="07745d55b001c85826eedd479285cdbb.svg" color="#5bbad5" />
  18. <link rel="shortcut icon" href="data:image/vnd.microsoft.icon;base64,AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAAAABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAAAAAAAAAAAAAAAAAA/9o4BAAAAAAAAAAAAAAAAP/aOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAT/2jgEAAAAAP/aOAT/2jh8/9o4x//aONj/2jjH/9o4fP/aOBoAAAAAAAAAAAAAAAD/2jgE/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAAAAAAAAAAAA/9o4BP/aOMf/2jj//9o4///aOP//2jj//9o4///aONj/2jgy/9o4fP/aONj/2jjw/9o42P/aOK3/2jgaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4Gv/aOFr/2jhG/9o4rf/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jjw/9o4///aOP//2jj//9o4///aOP//2jjw/9o4MgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jh8/9o48P/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o42P/aOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOJL/2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOFoAAAAA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4Mv/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOJIAAAAA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4fP/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOHwAAAAA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4kv/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOEYAAAAA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4fP/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4xwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4Mv/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4xwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOJL/2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o42AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jiS/9o48P/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4Mv/aOFr/2jh8/9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4WgAAAAD/2jgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BAAAAAD/2jha/9o48P/aONj/2jhG/9o4rf/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jitAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aOEb/2jj//9o4///aOP//2jjH/9o4Gv/aOPD/2jj//9o4///aOP//2jj//9o4///aONj/2jiS/9o48P/aOP//2jj//9o48P/aOHz/2jgaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BP/aONj/2jj//9o4///aOP//2jj//9o4kv/aOBr/2jiS/9o48P/aOPD/2jjw/9o4kv/aOEb/2jgE/9o4Gv/aOEb/2jha/9o4Gv/aOHz/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4Rv/aOP//2jj//9o4///aOP//2jj//9o4///aOMf/2jha/9o4Rv/aOEb/2jhG/9o4fP/aOPD/2jhGAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4fP/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOPD/2jj//9o4///aOP//2jh8AAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4kv/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o48P/aOP//2jh8AAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4kv/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jh8AAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4Wv/aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jhGAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4Gv/aONj/2jj//9o48P/aOPD/2jj//9o48P/aOPD/2jjw/9o4///aOPD/2jjw/9o4///aONj/2jgEAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOFr/2jiS/9o4fP/aOHz/2jha/9o4fP/aOHz/2jh8/9o4Wv/aOHz/2jh8/9o4kv/aOEYAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aOHz/2jit/9o4rf/aOJL/2jiS/9o4rf/aOK3/2jit/9o4kv/aOK3/2jit/9o4rf/aOFoAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aOHz/2jh8/9o4fP/aOHz/2jiS/9o4fP/aOHz/2jh8/9o4kv/aOHz/2jh8/9o4fP/aOFoAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aOHz/2jit/9o4kv/aOJL/2jiS/9o4kv/aOJL/2jiS/9o4kv/aOK3/2jiS/9o4rf/aOFoAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOFr/2jit/9o4rf/aOJL/2jha/9o4rf/aOK3/2jit/9o4Wv/aOHz/2jh8/9o4fP/aODIAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aOHz/2jit/9o4rf/aOJL/2jh8/9o4rf/aOK3/2jit/9o4RgAAAAD/2jgEAAAAAAAAAAAAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aOHz/2jiS/9o4fP/aOHz/2jiS/9o4fP/aOHz/2jiS/9o4Rv/aODL/2jgy/9o4Mv/aOBoAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aOHz/2jiS/9o4kv/aOJL/2jiS/9o4kv/aOJL/2jiS/9o4kv/aOMf/2jit/9o4x//aOFoAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOFr/2jiS/9o4kv/aOHz/2jha/9o4kv/aOJL/2jiS/9o4fP/aOJL/2jh8/9o4fP/aOFoAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4Rv/aOK3/2jiS/9o4kv/aOFoAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgE/9o4BP/aOAQAAAAA/9o4BP/aOAQAAAAA/9o4Wv/aOMf/2jh8/9o4x//aOHwAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4Wv/aOHwAAAAA/9o4Wv/aOHwAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAP/aOAT/2jgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4Wv/aOHwAAAAA/9o4Wv/aOHwAAAAAAAAAAP/aODL/2jj//9o4Mv/aOK3/2jjHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jga/9o4Mv/aODL/2jgy/9o4Mv/aODL/2jgy/9o4Mv/aODL/2jga/9o4fP/aOJL/2jga/9o4fP/aOJL/2jga/9o4Mv/aOFr/2jj//9o4Wv/aOMf/2jjY/9o4Gv/aODL/2jgy/9o4Mv/aODL/2jgy/9o4Mv/aODL/2jgy/9o4Mv/aODL/2jgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BAAAAAD/2jh8/9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jj//9o4///aOP//2jhGAAAAAP/aOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jga/9o4Rv/aOEb/2jhG/9o4Rv/aOEb/2jh8/9o48P/aOP//2jjH/9o4Rv/aODL/2jhG/9o4Rv/aOEb/2jhG/9o4Rv/aOFr/2jj//9o4fP/aODL/2jhG/9o4Rv/aOEb/2jhG/9o4Mv/aOEb/2jjH/9o4///aOPD/2jh8/9o4Rv/aOEb/2jgaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4Gv/aOJL/2jj//9o42P/aOEYAAAAAAAAAAAAAAAAAAAAAAAAAAP/aODL/2jj//9o4RgAAAAD/2jgEAAAAAAAAAAAAAAAA/9o4Rv/aONj/2jj//9o4kv/aOBoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BP/aOAT/2jgE/9o4BP/aOAT/2jgEAAAAAAAAAAD/2jgy/9o4x//aOP//2jjH/9o4MgAAAAD/2jgEAAAAAP/aODL/2jj//9o4RgAAAAD/2jgEAAAAAP/aODL/2jjH/9o4///aOMf/2jgyAAAAAAAAAAD/2jgE/9o4BP/aOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAAAAAAAP/aOFr/2jjw/9o4///aOJL/2jgaAAAAAP/aODL/2jj//9o4RgAAAAD/2jga/9o4kv/aOP//2jjw/9o4WgAAAAAAAAAA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgE/9o4BAAAAAD/2jgE/9o4fP/aOP//2jjw/9o4Wv/aODL/2jj//9o4Rv/aOFr/2jjw/9o4///aOHz/2jgEAAAAAP/aOAT/2jgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAAAAAAAP/aOBr/2jit/9o4///aOPD/2jj//9o48P/aOP//2jit/9o4GgAAAAAAAAAA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BAAAAAAAAAAA/9o4Mv/aONj/2jj//9o42P/aOEYAAAAAAAAAAP/aOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aODL/2jj//9o4RgAAAAD/2jgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aODL/2jjw/9o4RgAAAAD/2jgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA//+P////AAD//gMP//8AAP/8AAf//wAA/+AAA///AAD/gAAD//8AAP+AAAH//wAA/4AAA///AAD/AAAD//8AAP+AAAP//wAA/4AAA///AAD/gAAD//8AAP/AAAP//wAA//wAB///AAD/5AAH//8AAP/CAB///wAA/4EH9///AAD/gPun//8AAP+AA6f//wAA/wADp///AAD/AAOn//8AAP+AA6f//wAA/4ADp///AAD/3/en//8AAP/AB6f//wAA//u/p///AAD/wAen//8AAP/Ef6f//wAA/8R/p///AAD/23+n//8AAP/AB6f//wAA/8xfp///AAD//8en//8AAP//16f//wAA////p///AAD///+n//8AAP//26f//wAA/wAAAAD/AAD//H+/x/8AAP/+P7+P/wAA//+Pvj//AAD//+O4//8AAP//+bP//wAA///8B///AAD///8f//8AAP///7///wAA////v///AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BP/aOAT/2jgEAAAAAP/aOCP/2jhA/9o4IwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAT/2jic/9o4/v/aOP7/2jj+/9o4Y//aOCP/2jic/9o4nP/aOGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOED/2jiO/9o4tP/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOI4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jiO/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOCMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4QP/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4YwAAAAD/2jgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BAAAAAD/2jhj/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jhAAAAAAP/aOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aOED/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o40gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BP/aONL/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jjS/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4I//aOI7/2jjS/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgE/9o4jv/aOID/2jiO/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4QAAAAAD/2jgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOJz/2jj+/9o4/v/aOGP/2ji0/9o4/v/aOP7/2jj+/9o4jv/aOI7/2jjS/9o4tP/aOID/2jgjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgj/9o4/v/aOP7/2jj+/9o46//aOID/2jiA/9o4jv/aOI7/2jiAAAAAAP/aOGP/2jhj/9o4tP/aOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAP/aOGP/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOOv/2jjr/9o4/v/aOOsAAAAA/9o4gP/aOI7/2ji0/9o4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4Y//aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o46wAAAAD/2jiA/9o4jv/aOLT/2jhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jhA/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jj+/9o4/v/aOP7/2jjSAAAAAP/aOID/2jiO/9o4tP/aOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jiO/9o4tP/aOJz/2jic/9o4tP/aOJz/2jic/9o4tP/aOEAAAAAA/9o4gP/aOI7/2ji0/9o4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOID/2jiO/9o4gP/aOI7/2jiO/9o4gP/aOI7/2jiO/9o4QAAAAAD/2jiA/9o4jv/aOLT/2jhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4gP/aOI7/2jiO/9o4jv/aOI7/2jiO/9o4nP/aOJz/2jhAAAAAAP/aOID/2jiO/9o4tP/aOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jiA/9o4tP/aOID/2jiO/9o4tP/aOGP/2jhA/9o4QP/aOCMAAAAA/9o4gP/aOI7/2ji0/9o4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOID/2jiO/9o4gP/aOI7/2jiO/9o4Y//aOAT/2jgj/9o4BAAAAAD/2jiA/9o4jv/aOLT/2jhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4gP/aOLT/2jiO/9o4nP/aOJz/2jiO/9o4nP/aOLT/2jhAAAAAAP/aOID/2jiO/9o4tP/aOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgj/9o4I//aOCP/2jgj/9o4I//aOED/2jiO/9o4jv/aOEAAAAAA/9o4gP/aOI7/2ji0/9o4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BAAAAAAAAAAAAAAAAP/aOAQAAAAA/9o4QP/aOI7/2jiA/9o4YwAAAAD/2jiO/9o4jv/aOLT/2jhAAAAAAP/aOAT/2jgE/9o4BP/aOAT/2jgE/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jhA/9o4QP/aOCP/2jhjAAAAAP/aOID/2jiO/9o4tP/aOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BP/aOID/2jiO/9o4gP/aOID/2jiA/9o4Y//aOJz/2ji0/9o4nP/aOLT/2jiA/9o40v/aONL/2jjS/9o4nP/aOID/2jiO/9o4gP/aOGP/2jiA/9o4jv/aOGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgE/9o4jv/aOJz/2jiO/9o4nP/aOOv/2jj+/9o4tP/aOID/2jiO/9o4jv/aOI7/2jjS/9o40v/aOID/2jic/9o4jv/aOID/2ji0/9o4/v/aOOv/2jic/9o4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BP/aOID/2jjS/9o4YwAAAAD/2jgEAAAAAP/aOID/2jicAAAAAP/aOAQAAAAA/9o4Y//aONL/2jiA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAT/2jgE/9o4BP/aOAQAAAAAAAAAAP/aOCP/2ji0/9o46//aOGMAAAAA/9o4gP/aOJwAAAAA/9o4Y//aOOv/2ji0/9o4IwAAAAAAAAAA/9o4BP/aOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgEAAAAAAAAAAD/2jhA/9o40v/aOLT/2jic/9o4tP/aOLT/2jjr/9o4QAAAAAAAAAAA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BAAAAAAAAAAA/9o4Y//aOOv/2jjr/9o4gP/aOAQAAAAA/9o4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4BP/aOAQAAAAA/9o4gP/aOJwAAAAA/9o4BP/aOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgj/9o4IwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////DP///AA///AAP//wAD//8AA///AAP//wAD//+AA///gAf//xAH//8Ad///AEf//wBH//8AR///AMf//wDH//8Ax///B8f//wfH//8Ax////Mf///zH////x//+CABP/gAAB//zzz///Mz///8D////x////8///////8oAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jh4/9o4rv/aODX/2jhW/9o4HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOGj/2jjL/9o4/f/aOP3/2jj9/9o4/f/aOOL/2jgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aODX/2jj9/9o4/f/aOP3/2jj9/9o4/f/aOP3/2jj9/9o4NQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgf/9o44v/aOP3/2jj9/9o4/f/aOP3/2jj9/9o44v/aOAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOFb/2jjL/9o4/f/aOP3/2jj9/9o4/f/aOK4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOAz/2jji/9o4y//aOK7/2jjL/9o4eP/aOJL/2jhoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jg1/9o4/f/aOP3/2jj9/9o4/f/aOHj/2jh4/9o4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4DP/aOMv/2jjL/9o4y//aOOL/2jg1/9o4hv/aOHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jh4/9o4hv/aOIb/2jiS/9o4H//aOIb/2jh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9o4kv/aOK7/2jiG/9o4Nf/aOAz/2jiG/9o4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOFb/2jhW/9o4aP/aOJL/2jgf/9o4hv/aOHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/aOB//2jho/9o4H//aOIb/2jh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jg1/9o4eP/aOJL/2jiu/9o4eP/aOHj/2jjL/9o4kv/aOGj/2jiu/9o4kv/aODUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgM/9o4aP/aOIb/2jgf/9o4aP/aOB//2jiG/9o4aP/aOAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jgf/9o4eP/aOMv/2jh4/9o4HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2jhWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP3/AADwPwAA4D8AAOA/AADwPwAA4X8AAOH/AADhfwAA8X8AAON/AAD9fwAA/38AAPMnAAD93wAA/38AAP//AAA=" />
  19. <meta name="msapplication-config" content="4806ce9049e1e082dd3da4063ceb0eea.xml" />
  20. <meta name="theme-color" content="#ffffff" />
  21. <link href="vendor.1.css" rel="stylesheet"><link href="main.50213a000e42f5c05bcc.css" rel="stylesheet"></head>
  22. <body ng-controller="MainController">
  23. <div
  24. id="page-wrapper"
  25. ng-class="{
  26. open: toggle && ['portainer.auth', 'portainer.updatePassword', 'portainer.init.admin', 'portainer.init.endpoint'].indexOf($state.current.name) === -1,
  27. nopadding: ['portainer.auth', 'portainer.updatePassword', 'portainer.init.admin', 'portainer.init.endpoint'].indexOf($state.current.name) > -1 || applicationState.loading
  28. }"
  29. ng-cloak
  30. >
  31. <div id="sideview" ui-view="sidebar" ng-if="!applicationState.loading"></div>
  32. <div id="content-wrapper">
  33. <div class="page-content">
  34. <div class="page-wrapper" ng-if="applicationState.loading">
  35. <!-- loading box -->
  36. <div class="container simple-box">
  37. <div class="col-md-6 col-md-offset-3 col-sm-6 col-sm-offset-3">
  38. <!-- loading box logo -->
  39. <div class="row">
  40. <img ng-if="logo" ng-src="{{ logo }}" class="simple-box-logo" />
  41. <img ng-if="!logo" src="5da83cfb4883a59354abeff852cb7394.png" class="simple-box-logo" alt="Portainer" />
  42. </div>
  43. <!-- !loading box logo -->
  44. <!-- panel -->
  45. <div class="row" style="text-align: center;">
  46. Loading Portainer...
  47. <i class="fa fa-cog fa-spin" style="margin-left: 5px;"></i>
  48. </div>
  49. <!-- !panel -->
  50. </div>
  51. </div>
  52. <!-- !loading box -->
  53. </div>
  54. <!-- Main Content -->
  55. <div id="view" ui-view="content" ng-if="!applicationState.loading"></div> </div
  56. ><!-- End Page Content --> </div
  57. ><!-- End Content Wrapper --> </div
  58. ><!-- End Page Wrapper -->
  59. <script type="text/javascript" src="vendor.50213a000e42f5c05bcc.js"></script><script type="text/javascript" src="main.50213a000e42f5c05bcc.js"></script></body></html
  60. >

一般选择本地,我设置账号:admin,密码:admin1234
image.png
可视化面板我们平时不会使用,大家自己测试玩玩即可!

Docker的常用命令 - 图12