Docker Container基础操作(二)

Docker Container基础操作(二)

一、场景描述

1、benjiezhuyao本节主要介绍Docker容器的基本操作命令。

2、操作项主要包含容器的启动、停止、查看容器、删除容器、端口映射、容器日志

二、容器基本操作

1、容器基本命令总览

Docker容器实践描述

1、通过运行一个web应用容器,演示容器基本操作命令使用。

  • 下载Python Flask 镜像
  • 容器启动、停止、端口映射、容器日志查看、删除容器进行操作

Docker 容器操作

1、下载Python Flask镜像

docker pull training/webapp

2、启动PythonFlask镜像容器

docker run --name myweb -d -P training/webapp python app.py

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

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

  • --name: 自定义容器名,不指定时,docker 会自动生成一个名称

3、查看容器

  • 使用 docker ps 命令 查看正在运行的所有容器,加上 -a 参数可以查看所有容器(即无论是否运行中)

  • CONTAINER ID:容器 di
  • IMAGE:镜像名称:Tag
  •  COMMAND:命令
  • CREATES:容器创建的时刻
  • STATUS:容器当前的状态 (up 表示运行、Exited 表示停止运行)
  • PORTS:镜像程序使用的端口号
  • NAMES:容器的名字

 3.1端口信息

PORTS
0.0.0.0:32769->5000/tcp
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768上。

 通过浏览器访问WEB服务

ip addr show 查一下服务器 ip 地址,然后就能从物理机上访问了

3.2端口设置

通过 -p 参数设置指定的端口

-P:大写的P 在容器暴露的所有端口中随机分配一个端口映射

-p:小写的p 指定映射端口号

分为三种:

1、containePort :指定容器端口,宿主机端口随机映射。

docker run -p 80 -it  training/webapp python app.py

2、hostPort:containerPort:指定宿主机和容器端口号

docker run -p 8080:80 -it  training/webapp python app.py

3、ip:containerPort :指定宿主机的ip和容器端口号

docker run -p 192.168.6.10:80 -it  training/webapp python app.py

4、ip:hostPort:containerPort :指定宿主机ip、端口和容器端口

docker run -p 192.168.6.10:8080:80  -it  training/webapp python app.py

#使设置端口映射时 -p是小写
docker run --name web -d -p 8090:5000 training/webapp python app.py

3.3 容器ID或容器名字查看端口映射情况

#dockerID查看端口映射情况
docker port cf7f21285b51
#docker名字查看端口映射情况
docker port web

4、查看容器日志

  • docker logs [ID或者名字] 查看日志输出
  • docker logs -f myweb
  • -f: 让 docker logs 像使用 tail -f 一样来输出容器日志
  • -t:显示log日式时间
  • --tail 10 :查看指定log从末尾几行日志开始显示

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

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

docker top myweb

 6、检查 WEB 应用程序

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

docker inspect myweb

[
    {
        "Id": "7df2f250b798103d58e9d5b23d96d9a611a8f7f40a46e08c431687a8ca925604",
        "Created": "2019-08-14T07:38:18.109105325Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 38958,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2019-08-14T07:38:20.167989966Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:6fae60ef344644649a39240b94d73b8ba9c67f898ede85cf8e947a887b3e6557",
        "ResolvConfPath": "/var/lib/docker/containers/7df2f250b798103d58e9d5b23d96d9a611a8f7f40a46e08c431687a8ca925604/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/7df2f250b798103d58e9d5b23d96d9a611a8f7f40a46e08c431687a8ca925604/hostname",
        "HostsPath": "/var/lib/docker/containers/7df2f250b798103d58e9d5b23d96d9a611a8f7f40a46e08c431687a8ca925604/hosts",
        "LogPath": "/var/lib/docker/containers/7df2f250b798103d58e9d5b23d96d9a611a8f7f40a46e08c431687a8ca925604/7df2f250b798103d58e9d5b23d96d9a611a8f7f40a46e08c431687a8ca925604-json.log",
        "Name": "/myweb",
        "RestartCount": 0,
        "Driver": "overlay",
        "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,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": true,
            "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,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay/959af890591628b5736b239652f7485754910a0eaf0da5c9977a8eb66da7cbb0/root",
                "MergedDir": "/var/lib/docker/overlay/2f97ae229730784d705b685ddbb7065f7805c1b4d4f5de57d92d25604e65bbd1/merged",
                "UpperDir": "/var/lib/docker/overlay/2f97ae229730784d705b685ddbb7065f7805c1b4d4f5de57d92d25604e65bbd1/upper",
                "WorkDir": "/var/lib/docker/overlay/2f97ae229730784d705b685ddbb7065f7805c1b4d4f5de57d92d25604e65bbd1/work"
            },
            "Name": "overlay"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "7df2f250b798",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "5000/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "python",
                "app.py"
            ],
            "Image": "training/webapp",
            "Volumes": null,
            "WorkingDir": "/opt/webapp",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "bf8872a503cced65d65c73c3fa9bbf502cff69ae925aca608e815cfb2ffb866d",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "5000/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "32768"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/bf8872a503cc",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "e4861c79cb1d883ea09eab1bd82e6a86fd9a0e2630137e54ba548dec07e2b093",
            "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": "fe918bb25c8ccdd7f7c47ef94902664ef19ecd67a1402dfe011da51bcfbf6a1f",
                    "EndpointID": "e4861c79cb1d883ea09eab1bd82e6a86fd9a0e2630137e54ba548dec07e2b093",
                    "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
                }
            }
        }
    }
]

7、停止 WEB 应用容器

停止容器有两种方式:

stop:发送停止运行命令,等待当前进程结束。docker stop 容器ID或容器名字

kill:立即杀死当前进程。docker kill 容器ID或容器名字

docker stop myweb

 8、重启正在运行的WEB应用容器

docker restart 来启动

docker restart myweb

 9、查询最后一次创建的容器

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

10、删除容器

#命令来删除不需要的容器 
docker rm 容器ID或者容器的名字

删除容器必须是停止的才能删除

三、容器进阶操作

1、守护形式运行容器

守护形式运行容器即后台方式运行容器,有两种实现方式:

  • 交互式运行:-i -t
  • 后台运行: -d

交互式运行实验

docker run -it --name ubut1 ubuntu /bin/bash
  • docker交互式运行会显示容器的ID号,说明已进入到改容器中。 

  • 退出当前容器,而不结束容器的运行。使用 Ctrl+pq 命令。

 

  • 查看容器在后台运行

  •  再次进入容器命令 attach 容器名称或容器ID
docker attach ubut1

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

后台运行实验

  •  后台运行 添加一个 -d参数
#执行sh命令循环输出 hello world
docker run --name u2 -d ubuntu /bin/sh -c "while true; do echo hellp world; sleep1;done"

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

2、在运行容器中启动新进程

docker exec 【-d】【-i】【-t】容器名 【Command】【args】

#在u2容器中启动了新的进程 /bin/bash
docker exec -it u2 /bin/bash

发布了268 篇原创文章 · 获赞 104 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/m0_38039437/article/details/99574055