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
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/99574055
- 点赞
- 收藏
- 关注作者
评论(0)