Docker 从入门到放弃(二)容器使用

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker 容器使用一、Docker 客户端docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。root@iZ235mi4a64Z:~# dockerUsage: docker COMMANDA self-suff...

Docker 容器使用

一、Docker 客户端

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

root@iZ235mi4a64Z:~# docker

Usage:    docker COMMAND

A self-sufficient runtime for containers

Options:
      --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/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  config      Manage Docker configs
  container   Manage containers
  image       Manage images
...

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。  

例如要查看 docker stats 指令的具体使用方法:

root@iZ235mi4a64Z:~# docker stats --help

Usage:    docker stats [OPTIONS] [CONTAINER...]

Display a live stream of container(s) resource usage statistics

Options:
  -a, --all             Show all containers (default shows just running)
      --format string   Pretty-print images using a Go template
      --no-stream       Disable streaming stats and only pull the first result
      --no-trunc        Do not truncate output

二、运行一个web应用

前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用 docker 构建一个 web 应用程序。我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。

第一次使用,本地是没有镜像的,所有要下载远程仓库镜像

参数说明:

  • -d:让容器在后台运行。

  • -P:将容器内部使用的网络端口映射到我们使用的主机上。

root@iZ235mi4a64Z:~# docker run -d -P training/webapp python app.py
Unable to find image 'training/webapp:latest' locally
latest: Pulling from training/webapp
e190868d63f8: Pull complete 
909cd34c6fd7: Pull complete 
0b9bfabab7c1: Pull complete 
a3ed95caeb02: Pull complete 
10bbbc0fc0ff: Pull complete 
fca59b508e9f: Pull complete 
e7ae2541b15b: Pull complete 
9dd97ef58ce9: Pull complete 
a4c1b0cb7af7: Pull complete 
Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d
Status: Downloaded newer image for training/webapp:latest
d83ffc50991fabc9aedee521be91329048bf0f17b4ca3f90cf20b63209cfbdd2
root@iZ235mi4a64Z:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
d83ffc50991f        training/webapp     "python app.py"     8 minutes ago       Up 8 minutes        0.0.0.0:32768->5000/tcp   adoring_jackson

下载好后会默认启动该容器

三、查看 WEB 应用容器

使用 docker ps 来查看我们正在运行的容器

root@iZ235mi4a64Z:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
d83ffc50991f        training/webapp     "python app.py"     8 minutes ago       Up 8 minutes        0.0.0.0:32768->5000/tcp   adoring_jackson

Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上。 这时我们可以通过浏览器访问WEB应用

我们也可以指定 -p 标识来绑定指定端口

root@iZ235mi4a64Z:~# docker run -d -p 5000:5000 training/webapp python app.py
ebdeda041b1e97850337c8a514dd7163db740a8eb82e8b7270402095a6368fa2
root@iZ235mi4a64Z:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
ebdeda041b1e        training/webapp     "python app.py"     5 seconds ago       Up 3 seconds        0.0.0.0:5000->5000/tcp    condescending_austin
d83ffc50991f        training/webapp     "python app.py"     16 minutes ago      Up 16 minutes       0.0.0.0:32768->5000/tcp   adoring_jackson
root@iZ235mi4a64Z:~# curl http://127.0.0.1:5000
Hello world!

容器内部的 5000 端口映射到我们本地主机的 5000 端口上

四、网络端口的快捷方式

通过docker ps 命令可以查看到容器的端口映射,docker还提供了另一个快捷方式:docker port,使用 docker port 可以查看指定 (ID或者名字)容器的某个确定端口映射到宿主机的端口号。

上面创建的web应用容器ID为:d83ffc50991f  名字为:adoring_jackson

可以使用docker port 7a38a1ad55c6 或docker port determined_swanson来查看容器端口的映射情况

root@iZ235mi4a64Z:~# docker port d83ffc50991f
5000/tcp -> 0.0.0.0:32768
root@iZ235mi4a64Z:~# docker port adoring_jackson
5000/tcp -> 0.0.0.0:32768

五、查看WEB应用程序日志

docker logs [ID或者名字] 可以查看容器内部的标准输出。

root@iZ235mi4a64Z:~# docker logs -f d83ffc50991f
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.0.1 - - [05/Dec/2017 02:00:32] "GET / HTTP/1.1" 200 -
192.168.0.1 - - [05/Dec/2017 02:01:55] "GET / HTTP/1.1" 200 -
192.168.0.1 - - [05/Dec/2017 02:02:11] "GET / HTTP/1.1" 200 -
192.168.0.1 - - [05/Dec/2017 02:02:18] "GET / HTTP/1.1" 200 -
192.168.0.1 - - [05/Dec/2017 02:02:23] "GET / HTTP/1.1" 200 -

-f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。

从上面,可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。

六、查看WEB应用程序容器的进程

可以使用 docker top 来查看容器内部运行的进程

root@iZ235mi4a64Z:~# docker top 1c0efc43c0e5
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                25066               25050               0                   10:19               ?                   00:00:00            python app.py

七、检查WEB应用程序

使用 docker inspect 来查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

root@iZ235mi4a64Z:~# docker inspect 1c0efc43c0e5
[
    {
        "Id": "1c0efc43c0e5207b6eaa63270834562a5193820436ba80de3fdd8dfa1b77c764",
        "Created": "2017-12-05T02:19:12.557365261Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 25066,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2017-12-05T02:19:12.913440347Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:6fae60ef344644649a39240b94d73b8ba9c67f898ede85cf8e947a887b3e6557",
        "ResolvConfPath": "/var/lib/docker/containers/1c0efc43c0e5207b6eaa63270834562a5193820436ba80de3fdd8dfa1b77c764/resolv.conf",
...

八、停止、重启WEB应用容器

root@iZ235mi4a64Z:~# docker stop relaxed_jones
relaxed_jones
root@iZ235mi4a64Z:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@iZ235mi4a64Z:~# docker start relaxed_jones
relaxed_jones
root@iZ235mi4a64Z:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
1c0efc43c0e5        training/webapp     "python app.py"     6 minutes ago       Up 2 seconds        0.0.0.0:32770->5000/tcp   relaxed_jones

docker ps -l 查询最后一次创建的容器:

root@iZ235mi4a64Z:~# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
1c0efc43c0e5        training/webapp     "python app.py"     6 minutes ago       Up 47 seconds       0.0.0.0:32770->5000/tcp   relaxed_jones

九、移除WEB应用容器

使用 docker rm 命令来删除不需要的容器,删除容器时,容器必须是停止状态,否则会报如下错误

root@iZ235mi4a64Z:~# docker rm relaxed_jones
Error response from daemon: You cannot remove a running container 1c0efc43c0e5207b6eaa63270834562a5193820436ba80de3fdd8dfa1b77c764. Stop the container before attempting removal or force remove

先停止后删除

root@iZ235mi4a64Z:~# docker stop relaxed_jones
relaxed_jones
root@iZ235mi4a64Z:~# docker rm relaxed_jones
relaxed_jones

 

目录
相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
22 2
|
3天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
4天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
5天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
5天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
5天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
7天前
|
NoSQL Redis Docker
【赵渝强老师】使用Docker Compose管理容器
Docker Compose 通过 YAML 文件管理多个容器,简化复杂系统的部署和管理。本文介绍了 Docker Compose 的基本概念,并通过一个包含 Redis DB 和 Python Web 模块的示例,展示了如何使用 Docker Compose 部署和管理多容器应用。手动部署和 Docker Compose 部署的对比突显了 Docker Compose 在系统复杂度增加时的优势。
|
1月前
|
Oracle 关系型数据库 Linux
Docker入门和安装
这篇文章提供了Docker的入门指南和在CentOS系统上安装Docker的详细步骤。
39 0
Docker入门和安装
|
Docker 索引 容器
Docker从入门到精通——安装Docker
Docker从入门到精通——安装Docker
73 0
|
6月前
|
关系型数据库 MySQL 应用服务中间件
Docker 从入门,安装、配置、及部署
Docker 从入门,安装、配置、及部署
243 1