Docker 总结
Docker 总结
一、概念
Docker官网:Docker: Accelerated Container Application Development
Docker Hub Container Image Library | App Containerization
Docker:容器技术之一 【C/S】 基于Linux内核
三大件:镜像、容器、仓库 +【主机、客户端、服务端】
Build 》Ship 》 Run === 构建 》 运输 》 运行
存储引擎:overlay2
容器管理工具:LXC,Pouch,Podman
容器运行的地方:runtime
runtime 类型:LAC,Libcontainer,Runc,Rkt
依赖技术:容器网络、容器监控、服务发现、数据管理、日志收集
优势:快速部署、节省开销、简化配置、环境统一、可快速迁移扩展
定义工具:Docker images、Docker file、ACI
编排工具:Docker compose、Docker swarm、Mesos + Marathon、K8s
四个进程:Dockerd、Docker-proxy、containerd、containerd-shim
MNT:磁盘文件系统隔离
IPC:进程通信隔离
UTS:内核、主机名、域名隔离
PID:进程隔离
NET:网络隔离
USER:用户隔离
Cgroups:资源限制
二、常用命令
docker
run -d # 放后台
-p # 指定端口【宿主机:容器:协议】
-P # 生成随机端口,从 32768 开始
-H # 远程连接
-it # 分配一个终端
--name # 定义容器名称
-h # 定义内部主机名称
-v # 挂载路径 [宿主机路径]:[容器路径]:[ro/rw]
-e # 传参/传递变量 --env=[file]
--restart=always # 加入自启动
--privileged # 提权 root
--dns=x.x.x.x # 指定DNS
ps -a # all
-s # size
-f # 条件查询
-l # 最新创建
-q # 显示运行中容器ID
-qa # 所有容器ID
exec -it [ID/name] [sh | bash | /bin/bash] # 进入容器
attach # 进入容器,类似VNC
option # 进入容器
save -o [name].tar [name]:[tag] # 导出
load -i [name].tar # 导入
search # 搜索
tag [name]:latest [name]:[tag] # 打标签
inspect [name] # 查看版本
cp [path] [name]:[path] # 从宿主机复制文件到容器
history [name] # 镜像构建历史
port [name] # 查看端口映射关系
logs -f [name] # 查看日志
stats # 查看状态
top # 查看进程信息
events # 查看事件
三、Dockerfile
# 手动构建镜像
docker commit -a "test<test@123@qq.com>" # 标签,作者信息
-c # 要执行的命令 "EXPORT 80 443"
-m # 备注,做了哪些事情
-p # "在提交期间暂停容器,默认true"
build -t $NAME:$TAG # 通过 file 文件,批量构建镜像
# Dockerfile
FROM [name] # 指定基础镜像
LABLE version="v1" # 元数据,镜像作者信息等
RUN echo hello # 方式一:执行命令支持环境变量
["/bin/bash","-c","echo hello"] # 方式二:不支持环境变量
ENV <key1> <value> # 设置环境变量
<key2>=<value>
ARG <name>="myx" # 与ENV同名会被覆盖
COPY [--chown=<user>:<group>] ["<src>","<dest>"] # 复制文件
ADD # 复制文件,自动解包,可以接链接
CMD ["命令","参数1","参数2"] # 方式一:不支持环境变量
命令 参数1 参数2 # 方式二:支持环境变量
EXPORT 80/tcp 443 # 指定暴露端口,协议,默认TCP协议
VOLUME [容器内路径] # 匿名卷
["/data1","/data2"]
WORKDIR /data # 指定进入容器的默认目录
ONBUILD RUN <命令> # 子镜像引用父镜像指令,父镜像不会执行
USER <user>[:<group>] # 指定当前用户,默认root
<UID>[:<GID>]
HEALTHCHECK [选项] CMD <命令>
--interval=<间隔> # 默认30s
--timeout=<时长> # 默认30s,超时为失败,返回1
--retries=<次数> # 默认30s
--start-period=<FDURATION> # 启动后多久执行检查
NONE # 基础镜像如果自带检查,用此项可屏蔽其他检查命令
# 返回值:0:健康
# 1:不健康
# 2:保留
.dockerignore # 排除指定文件
四、常用操作
Ctrl + p + q # 退出,但不终止前台进程
docker rm -f `docker ps -q` # 删除所有运行中容器
docker rm -f `docker ps -qa` # 删除所有容器
docker rmi -f `docker ps -qa` # 删除所有镜像
# 常用保留前台进程方式
tailf /etc/hosts
nginx -g daemon off;
httpd -f -h /data/html
httpd -D foreground
/use/bin/sshd -D # 包:openssh-server
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 梦缘羲
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果