1、容器的2种启动方式:
a、run命令:基于镜像新建一个容器并启动容器
docker run options Images command ( 其中command命令可以不写,默认命令为/bin/bash )
b、在终止状态下的容器,重新进行启动
2、docker ps -a : 可以查看所有运行过的容器
3、options参数分为以下几种:
--name 指定容器的名字
-d 通过后台运行
-i 交互模式
-t 调出终端
-p 映射
docker run -p 80:80 nginx:latest (此时终端进入阻塞模式了,会在本地80端口启动一个nginx服务,然后通过容器映射到虚拟机上,进行访问)
测试方法:终端新开一个窗口输入 curl http://192.168.60.109 (由于是从80映射到80,所以访问时可以不加端口;如果是从80映射到8000,访问时就需要加端口了。例如:docker run -p 8000:80 nginx:latest ) ,终端会打印出一串“Thank you for using nginx.”信息,则表示服务映射开启成功了:
![](https://img.haomeiwen.com/i13174755/3394aa7c4759814b.png)
这时候会发现终端这边有打印出一行请求信息:
![](https://img.haomeiwen.com/i13174755/70d69cb515b24e0a.png)
4、docker ps -q : 列出所有容器的id
-q可以和-a结合使用,如:docker ps -aq 列出所有运行过的容器的id
![](https://img.haomeiwen.com/i13174755/b739b841d6ba4be6.png)
5、docker logs + container id : 可以查看容器的运行logs
6、docker exec -it container id : 进入容器
测试方法:先在后台启动一个容器 docker run -d -it ubntu:16.04 ,成功将容器启动到后台
再执行:docker exec -it + 容器id,就能正常进入容器了。如下:
![](https://img.haomeiwen.com/i13174755/c288a5cc75ba09ce.png)
7、定制镜像,通过Dockerfile文件来定制的,如下:通过2个命令来实现最简单的定制
![](https://img.haomeiwen.com/i13174755/0af0b9f4e9e134b2.png)
FROM 指定基础镜像,即:在什么基础上面进行修改。如果没有找到这个镜像,则会自动先去下载。
8、docker build -t my_nginx:v1 . (注意这个点,一定不要漏掉了)指定build一个my_nginx,指定版本为v1
![](https://img.haomeiwen.com/i13174755/a48a7d7ba592c106.png)
就会发现程序先去查找了nginx镜像,然后执行了一个run命令,然后启动了一个容器,docker images查找一下,就会发现刚才新启动的容器了:
![](https://img.haomeiwen.com/i13174755/1e54e44676c287cd.png)
9、执行一下:docker run -p 80:80 my_nginx:v1 启动my_nginx终端,新开终端窗口进行访问:curl http://192.168.60.109:80 就会发现终端只打印出来“<h1>hello docker </h1>”这行信息,其他信息都被覆盖掉了。如下:
![](https://img.haomeiwen.com/i13174755/a74652914f8bd75c.png)
这时候直接进入容器(注意:进入容器,容器id后面最好加上执行路径文件:/bin/bash ),查看index.html文件也会发现,只输出了一行hello docker信息,如下:
![](https://img.haomeiwen.com/i13174755/b2b87b952b7c8252.png)
docker 也是分为客户端和服务端的。
10、提个问题:怎么才能把当前目录文件引入到docker服务端?
如下:将index.html 拷贝到app目录
![](https://img.haomeiwen.com/i13174755/e7673b7ca03731c2.png)
然后启动下容器,就会发现文件已经正常拷贝到app目录了:
![](https://img.haomeiwen.com/i13174755/a45c7567f5e67042.png)
网友评论