docker学习

本文详细介绍了如何使用Docker创建容器、管理镜像仓库,包括设置国内镜像源、验证HTTPS、推送和拉取镜像,以及编写Dockerfile的基本步骤。还涵盖了搭建私有仓库、Dockerfile编写技巧和常见操作如镜像部署和测试。

常用命令

docker create --name 容器名称 -it -p 80:80 nginx:latest
docker start 容器名称/id

====>
docker run --name 容器名称 -it -p 80:80 nginx:latest
查看所有容器
docker ps -a

停止
docker pause 容器id
终结
docker stop 容器id

进入容器
docker attach 容器id
docker exec -it 容器id /bin/bash (推荐)

搭建docker仓库

1.vi /etc/docker/daemon.json 加入这些内容,一个是镜像源换成国内的,第二个是添加信任的https,ip就是你当前仓库所在的服务器外网ip。免得在push的时候出现下列错误。


{
        "registry-mirrors": ["http://hub-mirror.c.163.com"],
        "insecure-registries":["ip:5000"]
}

[root@VM-8-8-centos data]docker push ip:5000/mynginx
Using default tag: latest
The push refers to repository [ip:5000/mynginx]
Get https://ip:5000/v2/: http: server gave HTTP response to HTTPS client

2.systemctl daemon-reload重新加载配置
3.systemctl restart docker重启docker
4.docker run -d -p 5000:5000 -v /usr/data/docker/registry:/var/lib/registry registry
将上传的镜像放到 /usr/data/docker/registry 默认在/var/lib/registry

测试提交
5.docker push ip:5000/mynginx
可以去刚刚那个仓库看一下 /usr/data/docker/registry

测试拉取
6.docker pull ip:5000/mynginx

[root@aliyun ~]# curl http://ip:5000/v2/_catalog
{"repositories":["mynginx"]}


dockerFile编写

#定义变量
ARG VERSION=9.9
#指定基础容器
FROM debian:${VERSION}
#给镜像打标签,为了辅助过滤出特定的镜像
LABEL version=“1.0.0”
LABEL author=“test@github” date=“2020-01-01”
LABEL description=“This text,that label-values can span multiple lines”
#声明镜像内服务监听的端口,但只是声明作用,镜像运行的端口映射需要run时候指定-p 或者 -P
EXPOSE 22
#指定环境变量,在镜像生成过程中会被后续RUN指令使用,在镜像启动的容器中也会存在
ENV APP_VERSION=1.0.0
ENV APP_HOME=/usr/local/app
ENV PATH $PATH:/usr/local/bin
#该ENV在运行时可以被覆盖 如docker run --env =

#创建一个数据卷挂载点 存放数据库或者需要保持的数据
VOLUME ["/data/testvolume"]

#USER可以配置当前镜像运行时为指定的用户身份 -u 也可以

#WORKDIR 为后续的run cmd entrypoint配置工作目录
WORKDIR /path/to/workdir
#如果配置多个,则后面的会作为前面的相对路径
#WORKDIR /a
#WORKDIR b
#WORKDIR c
#RUN pwd
#则最终run的pwd=/a/b/c

#ONBUILD 在基于此镜像创建子镜像时自动执行的部分
ONBUILD ADD ./app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src

#指定所创建镜像启动的容器接收推出的信号值
STOPSIGNAL signal

#HEALTHCHECK
HEALTHCHECK -interval=duration(过多久检测一次默认30s) -timeout=duration(等待检测结果的超时时间默认30s) -retries=N(如果失败重试几次后才确定失败默认3)

#指定其他命令使用shell时的默认shell类型,shell会影响后续的指令的执行方式
shell [“executable”,“parameters”] 默认为["/bin/sh","-c"]
#当机器是windows(\作为分割)需要在文件开头添加 # escapse=’

#操作指令

run 或者run [“executable”,“param1”,“param2”]
#后者命令会被解析为json所以需要双引号
#后者则使用exec执行,前者默认在shell中执行

ADD 路径支持正则格式
COPY

<think>嗯,用户想了解Docker学习路径。首先我得理清楚Docker的基础知识,然后分步骤来规划。可能用户是刚开始接触容器技术,需要从最基础的概念讲起。 首先应该介绍Docker是什么,为什么需要它。然后安装和环境配置,这部分可能需要涵盖不同操作系统的安装步骤,比如Windows、macOS和Linux。接着是基本命令,像镜像和容器的管理,这部分比较实用,用户可能需要实际操作例子。 接下来是Dockerfile和镜像构建,这是关键部分,用户需要学会如何自定义镜像。之后是数据管理和网络配置,这些在实际项目中很重要,比如卷的使用和容器间通信。然后是Docker Compose,处理多容器应用,用户可能会用到这个来部署复杂应用。 高级部分可能需要包括Docker Swarm和Kubernetes的基础,但用户可能暂时不需要太深入,可以简要提一下。最后是安全性和最佳实践,确保用户了解如何安全地使用Docker。 还要考虑用户可能的应用场景,比如开发、测试或者生产环境部署。可能需要推荐一些实践项目,比如搭建Web应用,帮助用户巩固知识。另外,学习资源方面,官方文档和社区资源很重要,可以推荐一些书籍或者在线课程。 需要检查是否有遗漏的部分,比如是否提到监控和日志管理,或者与其他工具集成,比如CI/CD。不过作为学习路径,可能先集中在核心内容,高级话题可以后续扩展。 最后,确保结构清晰,步骤由浅入深,让用户能够循序渐进地学习。避免使用过于专业的术语,保持解释的易懂性。同时,注意使用正确的Markdown格式,特别是数学公式部分,不过在这个问题中可能用不上,但需要遵守系统指令中的格式要求。</think>以下是分阶段Docker学习路径(建议配合实践操作): 一、基础入门阶段(1-2周) 1. 核心概念理解 - 容器与虚拟机的本质区别(资源隔离 vs 硬件虚拟化) - 镜像分层存储原理(联合文件系统) - 容器生命周期管理(创建→运行→停止→销毁) 2. 环境搭建 ```bash # Linux安装示例 curl -fsSL https://get.docker.com | bash -s docker sudo systemctl enable --now docker ``` 3. 基础指令实践 ```bash docker run -d -p 80:80 --name web nginx:alpine # 启动Nginx容器 docker exec -it web sh # 进入容器shell docker logs --tail 50 web # 查看日志 ``` 二、进阶应用阶段(2-4周) 1. Dockerfile编写技巧 ```dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"] ``` 2. 数据持久化方案 ```bash docker volume create db-data docker run -d -v db-data:/var/lib/mysql mysql:8.0 ``` 3. 网络配置实践 ```bash docker network create app-net docker run -d --net=app-net --name db redis:6 docker run -d --net=app-net -p 8080:80 webapp ``` 三、生产级部署阶段(1-2个月) 1. Docker Compose编排 ```yaml version: '3.8' services: web: build: . ports: - "5000:5000" depends_on: - redis redis: image: "redis:alpine" ``` 2. 镜像优化策略 - 多阶段构建(减少最终镜像体积) - 安全扫描(使用docker scan) - 镜像签名验证 3. 容器监控方案 ```bash docker stats # 实时资源监控 docker run -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer ``` 四、持续学习建议 1. 官方文档精读(https://docs.docker.com) 2. 实验平台练习(推荐Play with Docker) 3. 参与社区项目(Docker GitHub仓库issue区) 4. 云原生技术延伸(Kubernetes、Service Mesh) 重点实践项目建议: 1. 构建完整LNMP环境 2. 实现CI/CD流水线 3. 搭建微服务架构演示系统 4. 容器安全加固实验 避坑指南: - 避免使用latest标签 - 容器内不要存储重要数据 - 生产环境限制容器资源配额 - 定期更新基础镜像版本 学习资源推荐: -Docker——容器与容器云(第2版)》 - 极客时间《深入剖析Kubernetes》(前4章) - Docker官方认证课程(DCA) - Katacoda交互式学习平台 建议每天保持1小时实践时间,通过实际项目巩固知识体系。遇到问题时,善用docker inspect命令分析容器状态,多查阅Docker官方文档的CLI参考手册。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值