1.因为docker和宿主机的端口映射,本质是内核的流量转发功能
需要开启
2.docker部署参考前文,镜像无法拉取,配置 阿里云 镜像加速器
3.docker网络流量走向?
主机---宿主机网卡ens33---docker0网桥--docker端口映射生成的虚拟网络接口
4. 镜像是分层储存的,利于镜像优化,多阶段构建
docker history 镜像名 :可以看到具体的操作
5.容器的本质:包裹着一个运行中的进程的容器空间
ps -ef 显示进程空间
6.自制一个docker镜像
1.下载一个基础镜像:docker pull centos:7.4.1708
2.进入镜像修改yum源:docker run -it -d centos:7.4.1708 sh --- 参考网上文档
建议使用curl下载
3.下载基础软件 net-tools,可以使用ifconfig rounte等网络命令
4.提交镜像修改记录: docker commit ccb614adca56 lxy
就会出现一个名字叫lxy的镜像
5.要么推到镜像仓库,要么保存成tar文件,在加载
docker save -o xxx.tar 镜像名:版本
docker load -i xxx.tar
7.新知识
docker run : 创建+启动一个新容器
curl是命令行工具,用于与服务器进行数据传输。它支持多种协议,如HTTP、HTTPS、FTP等,并允许用户发送各种HTTP请求(如GET、POST、PUT、DELETE等),同时接收来自服务器的响应。以下将详细介绍curl的通常用法以及一些常用参数:
- 获取页面内容:
- 当不加任何选项使用curl时,默认会发送GET请求来获取链接内容到标准输出。例如:
curl http://example.com
- 发送POST请求:
- 可以使用
-X POST
选项来发送POST请求,并通过-d
选项来指定POST请求的数据。例如:curl -X POST http://example.com/login -d "username=user&password=pass"
- 下载文件:
- 使用
-o
选项可以将远程文件下载到本地,并指定文件名。例如:curl -o example.html http://example.com/file.html
- 使用
-O
选项(注意是大写)也可以下载文件,但会直接使用URL中的文件名保存。- 显示HTTP头信息:
- 使用
-I
选项可以只显示HTTP头信息,而不显示文件内容。例如:curl -I http://example.com
- 跟踪重定向:
- 有些网站会自动重定向,使用
-L
选项可以让curl跟随重定向到新的网址。例如:curl -L http://example.com/redirect
8. docker组件工作流
images container registry 镜像 容器 仓库
9.容器关闭后,数据会丢失吗?
不会,docker ps -a 还存在就不会丢失
10.docker是一个命令行工具,用于管理容器的
11.推送镜像流程
1.docker login 输入账号密码(必须要登录才能推)
2.修改镜像名字,有一定规则 docker tag 旧镜像名 用户名/新名字
3.docker push 镜像 推送
12.镜像怎么修改?
改不了,镜像只是可读的文件,只能是运行容器去改,然后commit生成新的镜像
一般情况是,docker run exec -it xxx镜像 sh 修改后,docker commit XXX 生成新镜像,可以通过docker history 查看镜像层数
13.镜像和容器的关系?
镜像都是只读,容器docker run 会产生一个读写层,修改的东西都属于容器不会修改镜像
镜像 ro只读层 -- docker run 产生容器 读写层 -- bash 进去装东西 -- docker commit 容器id 新镜像名字
14.logs命令本质
docker logs -f 容器id
15.下载镜像后,怎么查看该镜像版本,例如nginx
docker run nginx:xxx nginx -v ---只想看版本,不运行容器
docker run nginx:xxx bash -c "nginx -v"
16.docker的增删改查对应的命令--笨熊费键盘
增:docker run -i -t -d -p -P -v
docker start 容器id
删:docker rm (-f) 容器id
改:docker commit 容器it
docker rename 旧容器名 新容器名
查:docker ps docker ps -a
.....待定
17.docker inspect 容器id 复制后 到json.cn 网站格式化,查看相应信息
18.容器交互与非交互方式
19.容器怎么做日志分析?
1.dokcer logs xxx > 1.txt 只针对access.log和error.log
2.如果需要分析其他日志:
查看容器日志输出到哪?docker inspect 容器名 |grep -i log
docker cp 容器:容器目录 宿主机
可以做容器和宿主机的目录映射
20.cmd是容器默认运行命令,通过用于指定服务的命令
21.容器化部署小鸟网站
静态资源更新无需重启容器,动态资源需要重启
-v 数据卷映射 容器和宿主机目录打通,不需要反复cp
22.容器结合nginx部署???
23.镜像和dockerfile关系
可以通过docker history 镜像,查看各个层
写一个dockerfile -- docker build 镜像
24.dockerfile 和 docker commit 都是可以用于制作镜像的,但是dockerfile更利于可重复性、可追踪性和版本控制
25.docker run是在镜像上多了一个 rw读写层,容器层,镜像是多层存储的,容器也是多层存储且在镜像上保存
26.dockerfile指令说明 --- 指令详解自行搜索
组成部分:1.from基础镜像 2.制作镜像操作指令 run 3.容器启动执行的默认命令CMD
RUN:每一个run都会开启一个镜像层,所以尽量多个合并,每一个run都是开启一个容器执行命令,然后提交结果介入新的一层镜像记录。
CMD:专门用于容器运行的默认命令,如果运行容器时传入参数,cmd将会被覆盖,且只有最后一个cmd生效。
CMD ["启动命令","-参数","参数对应;"]
EXPOSE:主动声明容器要对外提供的端口服务
EXPOSE <port1> <port2> ,在docker run的时候要使用-p做端口映射
ADD 、COPY:从宿主机获取资源用copy,纯文件 从互联网下载,使用add,且add支持解压缩功能
WORKDIR:指定工作目录,目录也需要提前创建
ENV:设置容器运行时的环境变量
USER:改变之后层执行run、cmd、entrypoit这类命令的身份,注意需要提前创建