目录

1、docker概念

1.1、镜像(image)

1.2、容器(container)

1.3、仓库(repository)

1.4、理解

2、用docker运行nginx

2.1、正常命令开启nginx

2.2、使用docker容器,启动一个nginx web服务器

2.3、docker容器的背后是进程


1、docker概念

1.1、镜像(image)

镜像就是打包好的软件,里边有程序代码、基础系统、依赖关系的软件包、系统库和工具等等。是需要人们去制作的。镜像的制作的学docker人的必备的技能。

1.2、容器(container)

是运行镜像的地方,背后起一个进程来运行这个镜像。

1.3、仓库(repository)

集中存放镜像的地方,由大佬制作出来,并上传上去的。在企业都是自己的去制作镜像的,因为若是有一些不法份子把病毒代码放在仓库中,下载之后就会中病毒。

docker官方提供的仓库地址:Docker Hub - Docker

国内的仓库地址:道云,Hub · DaoCloud

1.4、理解

一个镜像你可以理解为是一个软件,把镜像放在容器里边,就是运行这个镜像

2、用docker运行nginx

2.1、正常命令开启nginx

🍓[centos安装和启动nginx]🍓

[root@test-docker ~]# yum install nginx -y
# 若是不能安装成功,要先安装epel源。命令为"yum install epel-release -y"

[root@test-docker ~]# systemctl start nginx # 启动nginx进程
[root@test-docker ~]# ps aux|grep nginx  # 查看nginx进程是否存在
root       2318  0.0  0.0  39308  1052 ?        Ss   17:22   0:00 nginx: master process /usr/sbin/nginx
nginx      2319  0.0  0.0  39696  1824 ?        S    17:22   0:00 nginx: worker process
nginx      2320  0.0  0.0  39696  1824 ?        S    17:22   0:00 nginx: worker process
nginx      2321  0.0  0.0  39696  1824 ?        S    17:22   0:00 nginx: worker process
nginx      2322  0.0  0.0  39696  1824 ?        S    17:22   0:00 nginx: worker process
root       2324  0.0  0.0 112824   980 pts/0    S+   17:22   0:00 grep --color=auto nginx

🚀[查看进程监听哪个端口]🚀

# method1
[root@test-docker ~]# ss -anplut| grep nginx
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=2322,fd=6),("nginx",pid=2321,fd=6),("nginx",pid=2320,fd=6),("nginx",pid=2319,fd=6),("nginx",pid=2318,fd=6))
tcp    LISTEN     0      128    [::]:80                 [::]:*                   users:(("nginx",pid=2322,fd=7),("nginx",pid=2321,fd=7),("nginx",pid=2320,fd=7),("nginx",pid=2319,fd=7),("nginx",pid=2318,fd=7))

# method2,这个netstat命令需要安装,ss是自带的命令
[root@fttswlp ~]# netstat -anplut |grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1712/nginx: master  
tcp6       0      0 :::80                   :::*                    LISTEN      1712/nginx: master

🍓[用网站访问你虚拟机的IP地址]🍓

要是想要访问自己的IP地址,必须关闭防火墙和SElinux

docker 运行jar 怎么查看 docker查看进程_docker 运行jar 怎么查看

🍓[进入nginx存放网页的目录并进行修改首页且添加一个链接网页]🍓

那怎么才能像京东网页那样点一个文字就能进去新的网页呢?

我们只需要在网页界面上放置另一个网页的关键字(本质上这个关键字就是一个链接)

[root@test-docker ~]# cd /usr/share/nginx/html/
[root@test-docker html]# ls
404.html  50x.html  en-US  icons  img  index.html  nginx-logo.png  poweredby.png
# index.html,是首页文件
[root@localhost html]# rm -rf *  # 要是写自己的网页,这里文件都没啥用,所以删掉
[root@localhost html]# vim index.html   # 自己编写网页
[root@localhost html]# cat index.html 
<html>
	<head>
		<title>FanMY_71</title>
	</head>
	<body>
		<p> <h1>Welcome to my web</h1>
		<p> name: FMY </p>
		<p> sex:male </p>
		<p>phoneNO:18911111111</p>
		<p> Let me show you how I look</p>
		<p>this is me </p> 
		<img src=fan.gif>  # 这是照片名字
		<p></p>
		<a href=study.html>Introduce myself</a>  # 这是链接网页
	</body>
</html>
[root@localhost html]# cat study.html 
<html>
	<head>
		<title>study</title>
	</head>
	<body>
		<h1><p> purport:learning makes me happy </h1>
		<p> So you can see the beauty of my body </p>
		<img src=myself.jpg>  # 这是照片名字
		<h1> Click on the content below to see more exciting content  </h1>
		<a href=http://www.cpd.com.cn/>more beauty girls wait for you </a>
	</body>
	
<html>

🍓[搞点图片上去]🍓

[root@localhost html]# yum lrzsz -y  #lrzsz是linux和windows之间传输文件的工具
[root@localhost html]# rz  # 接受文件
# 输入"rz"然后敲击回车,你就可以选择文件传入Linux了
[root@localhost html]# ls
fan.gif  index.html  myself.jpg  study.html
# 注意,我们在网页编辑的时候,照片的名字不要打错,不然会显示不出来

2.2、使用docker容器,启动一个nginx web服务器

参考道云官方网站:Hub · DaoCloud

docker 运行jar 怎么查看 docker查看进程_修改网页_02

相当于iptables 的dnat

先把"/usr/share/nginx/html"的内容复制到/web中

docker 运行jar 怎么查看 docker查看进程_nginx_03

原因和解决办法

# 原因:因为之前我们启动了docker并且在制作网页的时候把防火墙关闭了,就导致了连锁反应把docker的自定义链关闭,所以就导致了上边这个问题

# 解决办法
[root@localhost ~]# service  docker restart  # 重启dokcer服务,会重新去添加docker的自定义链在iptables里
#重起之后,再执行上面那个命令,但是容器名字要改
[root@localhost ~]# docker run --name fan-nginx-1 -v /web:/usr/share/nginx/html:ro -d -p 8080:80 daocloud.io/nginx

"""
命令解释:
doker run  启动容器
--name sc-nginx-2    指定容器的名字
-v /web:/usr/share/nginx/html:ro  数据卷:可以是实现宿主机和容器直接的数据共享
/web  是宿主机的目录   /usr/share/nginx/html  是容器里的系统的目录的路径  ro 只读
-d 在后台启动一个容器进程  deamon
-p  端口的映射:相当于iptables的DNAT  8080:80  访问宿主机的8080端口会转发给容器的80端口
daocloud.io/nginx  到daocloud.io网站下载nginx的镜像
"""

🍓[结果查看]🍓

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS          PORTS                                   NAMES
0f1c0c7fdc0d   daocloud.io/nginx   "/docker-entrypoint.…"   17 minutes ago   Up 17 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   fan-nginx-1
[root@localhost ~]#  ss -anplit |grep 8080
LISTEN     0      128          *:8080                     *:*                   users:(("docker-proxy",pid=2063,fd=4))
LISTEN     0      128       [::]:8080                  [::]:*                   users:(("docker-proxy",pid=2070,fd=4))
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS                      PORTS                                   NAMES
0f1c0c7fdc0d   daocloud.io/nginx   "/docker-entrypoint.…"   34 minutes ago   Up 34 minutes               0.0.0.0:8080->80/tcp, :::8080->80/tcp   fan-nginx-1
2b180d53996f   hello-world         "/hello"                 41 minutes ago   Exited (0) 41 minutes ago                                           goofy_cray

[修改web的内容查看IP地址对应的网页]

[root@localhost web]# cat index.html 
<html>
	<head>
		<title>FanMY_71</title>
	</head>
	<body>
		<p> <h1>Welcome to my web,this is docker</h1>  # 在这后边添加了一段代码
		<p> name: FMY </p>
		<p> sex:male </p>
		<p>phoneNO:18911111111</p>
		<p> Let me show you how I look</p>
		<p>this is me </p> 
		<img src=fan.gif>
		<p></p>
		<a href=study.html>Introduce myself</a>
	</body>
</html>

docker 运行jar 怎么查看 docker查看进程_修改网页_04

🍓[多添加几个到网页的端口]🍓

[root@localhost web]# docker run --name fan-nginx-2 -v /web:/usr/share/nginx/html:ro -d -p 8081:80 daocloud.io/nginx
668f7bfbac94559140d858a6501734aefb5685ca5ece46ea0d33812bf502b51f
# 这串数字是容器的唯一id,唯一标识符。

# 添加容器fan-nginx-2,端口是8081
[root@localhost ~]#  docker ps -a|grep fan-nginx-2
668f7bfbac94   daocloud.io/nginx   "/docker-entrypoint.…"   46 hours ago   Exited (0) 45 hours ago             fan-nginx-2

 

docker 运行jar 怎么查看 docker查看进程_修改网页_05

2.3、docker容器的背后是进程

一个容器就是一个进程在支撑

[root@localhost web]# ps aux|grep docker
root       2455  0.1  3.3 1110200 61832 ?       Ssl  12:15   0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root       2626  0.0  0.6 972752 12376 ?        Sl   12:15   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8081 -container-ip 172.17.0.2 -container-port 80
root       2632  0.0  0.4 825288  8252 ?        Sl   12:15   0:00 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8081 -container-ip 172.17.0.2 -container-port 80
root       2747  0.0  0.0 112824   980 pts/0    S+   12:20   0:00 grep --color=auto docker

3、随章小练习

docker 运行jar 怎么查看 docker查看进程_docker 运行jar 怎么查看_06

# 若是Ubuntu的系统只要在这些命令前边添加sudo就行了。
# 1
[root@localhost ~]# docker pull redis

# 2
[root@localhost ~]# docker pull nginx

# 3
fmy@dockerserever:~$ sudo docker run --name fan-nginx-1 -d -p 8081:80 nginx
c0fe3a59a0221eecb20a44b87d41dde54a437fececcb3bb46b3f50f7d34d4561

# 4
fmy@dockerserever:~$ sudo docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED              STATUS                   PORTS                                   NAMES
c0fe3a59a022   nginx         "/docker-entrypoint.…"   About a minute ago   Up About a minute        0.0.0.0:8081->80/tcp, :::8081->80/tcp   fan-nginx-1
448c9db89f6e   hello-world   "/hello"                 2 days ago           Exited (0) 2 days ago                                            beautiful_jepsen
637b1154981f   hello-world   "/hello"                 11 days ago          Exited (0) 11 days ago                                           suspicious_jones

# 5
fmy@dockerserever:~$ sudo docker stop fan-nginx-1
fan-nginx-1
fmy@dockerserever:~$ sudo docker ps -a|grep fan-nginx-1
c0fe3a59a022   nginx         "/docker-entrypoint.…"   2 minutes ago   Exited (0) 25 seconds ago             fan-nginx-1

# 6
fmy@dockerserever:~$ sudo docker start fan-nginx-1
fan-nginx-1
fmy@dockerserever:~$ sudo docker ps -a|grep fan-nginx-1
c0fe3a59a022   nginx         "/docker-entrypoint.…"   3 minutes ago   Up 1 second              0.0.0.0:8081->80/tcp, :::8081->80/tcp   fan-nginx-1

# 7 
fmy@dockerserever:~$ sudo docker rm fan-nginx-1

# 8
fmy@dockerserever:~$ sudo docker version

# 9
fmy@dockerserever:~$ sudo docker search mongodb