Docker容器高级操作
Docker容器创建、停止、启动、删除等基础操作上篇已述,然Docker容器被广大开发者青睐,不可能只有如此简单的功能,必有高阶功法。那么接下来 让我们一同走进容器操作的高级篇,领略其高级操作的魅力
。
查看容器
docker ps -a | grep tomcat
[root@tudou tudou]# docker ps -a | grep tomcat
e3a88ea4ffb9 tomcat:8.0 "catalina.sh run" 13 seconds ago Up 12 seconds 8080/tcp tudou-tomcat
[root@tudou tudou]#
可以看到有 8080/tcp
但是却无法访问到tomcat的主界面???
原因 :
这里是容器的端口,并不是宿主机的端口,需要映射到宿主机方可访问。
端口映射
docker run -d -p 8080:8080/tcp–name tudou-tomcat tomcat:8.0
-p
:端口映射操作8080:8080/tcp
:宿主机端口:容器端口/协议。(协议可不8080:8080
,默认为tcp
)-P(大写)
:在宿主机上随机为应用分配一个49000~49900内未被使用的端口,并映射到容器开放的网络端口。
注意
:通常采用-p进行指定端口映射,多个则是多个-p
[root@tudou tudou]# docker rm -f tudou-tomcat
tudou-tomcat
[root@tudou tudou]# docker run -d -p 8080:8080/tcp --name tudou-tomcat tomcat:8.0
5bc5b04a6f5aacbd8b1b822527ccb78357071a98c90bfdd56c87bfa2709cdfea
[root@tudou tudou]# docker ps -a | grep tomcat
bbc579ce6fec tomcat:8.0 "catalina.sh run" 6 seconds ago Up 5 seconds 0.0.0.0:8080->8080/tcp tudou-tomcat
[root@tudou tudou]#
发现容器端口映射变成了 0.0.0.0:8080->8080/tcp
, 这就意味着容器的 8080
已经映射到宿主机的 8080
[root@tudou tudou]# netstat -ano| grep 8080
tcp6 0 0 :::8080 :::* LISTEN off (0.00/0/0)
经检查发现。宿主机的 8080
端口处于监听状态,那么此时即可访问 Tomcat首页
了
查看端口
docker port idOrName
port
:查看端口操作。idOrName
: 容器名称或者容器ID。
[root@tudou tudou]# docker port tudou-tomcat
8080/tcp -> 0.0.0.0:8080
# 容器端口 -> 宿主机端口
查看进程
docker top idOrName
top
:查看进程操作。idOrName
: 容器名称或者容器ID。
[root@tudou tudou]# docker top tudou-tomcat
UID PID PPID C STIME TTY TIME CMD
root 15837 15820 0 12:17 ? 00:00:03 /docker-java-home/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
可以清楚看到,容器内跑的进程详细信息 用户
进程ID
执行命令
等等。
文件挂载 (可用来动态修改容器内文件内容立即生效)
docker run -d -p 8080:8080/tcp -v /home/tudou/tudou:/usr/local/tomcat/webapps/ --name tudou-tomcat tomcat:8.0
-v
:容器挂载卷:-v 主机目录:容器目录(将宿朱继文件或者目录挂载到容器内
)
注意:
1. 容器目录不可以为相对路径
2. 宿主机目录如果不存在,则会自动生成
# 创建/home/tudou/tudou
[root@tudou tudou]# pwd
/home/tudou/tudou
# 再创建tudou,之下创建index.html
[root@tudou tudou]# cat tudou/index.html
<html>
<head>
<title>index</title>
</head>
<body style="text-align:center"&