Docker学习

Docker入门指南
这篇博客介绍了Docker的基础知识,包括如何准备Docker环境,管理镜像和容器,使用Dockerfile构建镜像,以及初步接触Docker Compose。此外,还提到了DockerHub作为常用的镜像仓库。

Docker学习

博客搬家到 https://tifinity.github.io/ 啦

准备Docker环境

安装Docker:

  • Community Edition CE 社区版

  • Enterprise Edition EE 企业版

我们就安装社区版。

避免每次执行docker命令时sudo,将当前用户加入docker用户组,参见Docker官方文档

sudo groupadd docker
sudo usermod -aG docker $USER

重启电脑 或者执行 newgrp docker 激活对组的更改。

Docker是CS架构,与MySQL一样,需要本机启动服务:

sudo service docker start
sudo systemctl start docker

执行docker version检查版本信息。

在这里插入图片描述

镜像 Image

查看本地所有镜像:

# 列出本机的所有 image 文件。
docker image ls
# 或者
docker images

在这里插入图片描述

修改默认仓库:

官方仓库的下载速度可能比较慢,所以我们可以修改为国内镜像仓库。

打开/etc/default/docker加上:

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

然后重启docker服务

sudo service docker restart

其他

在默认仓库搜索镜像:

docker search <name>

拉取镜像:

docker pull <name+tag>

容器 Container

镜像与容器就像程序与进程。

运行第一个image,hello-world:

docker run hello-world

Dokcer会在本地目录/var/docker/image查找要运行的镜像文件,如果没有会自动从DockerHub下载。

在这里插入图片描述

hello-world做的事情就是简单输出一些信息,然后就自动中止。

运行另一个镜像:

# --rm表示容器退出时自动删除,-it会创建一个虚拟终端让你可以在容器内进行操作。
docker run --rm -it pytorch/pytorch

在这里插入图片描述

其他

# 显示运行中的容器
docker ps
# 显示所有容器(包括中止的)
docker ps -a
# 重启容器
docker restart <name>
# 进入正在运行的容器,在容器中使用exit退出
docker attach <name>

描述文件 Dockerfile

Dockerfile就像Makefile。

这是一个Danjgo后端的Dockerfile。

FROM python:3.6
ENV DATABASE_USERNAME xxx
ENV DATABASE_PASSWORD xxx
ENV DATABASE_ADDRESS xxx
ENV DATABASE_PORT xxx
ENV REDIS_HOST xxx
ENV REDIS_PORT xxx
WORKDIR /tifinity/backend
ADD . /tifinity
RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r ../requirements.txt
EXPOSE 9003
ENTRYPOINT ["python3", "manage.py", "runserver","0.0.0.0:9003"]

  • FROM:一般构建一个image是在一个已有的image上添加层,FROM 后面的参数表示指定基础镜像,可以用scratch来指定空白镜像。
  • ENV:设置容器内环境变量。
  • ADD:复制文件到工作目录下。
  • COPY:同ADD,只是不支持自动下载和解压。
  • WORKDIR:指定工作目录。
  • VOLUME:设置卷,挂在主机目录。
  • RUN:构建镜像时执行的命令。
  • EXPOSE:开放给外部的端口。
  • ENTRYPOINT:入口点,运行容器时执行的命令。
  • CMD:运行容器之后执行的命令。

执行:

# -t参数指定镜像名
docker build -t test

新的test镜像就构建好了。

目前只会最基础的使用,还在学习中。

Dockerfile官方文档

Docker compose

安装docker-compose工具

由于墙的存在,crul太慢,所以使用pip方式a安装

Ubuntu下:

sudo apt install python-pip
sudo pip install docker-compose
docker-compose --version

在这里插入图片描述

docker-compose根据目录下的.yml文件管理多个docker容器之间的关系,组成一个应用。

比如下面这个mysql+wordpress的例子:

# test.yml
mysql:
    image: mysql:5.7
    environment:
     - MYSQL_ROOT_PASSWORD=tianHAOyuQI361
     - MYSQL_DATABASE=wordpress
web:
    image: wordpress
    links:
     - mysql
    environment:
     - WORDPRESS_DB_PASSWORD=tianHAOyuQI361
    ports:
     - "127.0.0.3:8080:80"
    working_dir: /var/www/html
    volumes:
     - wordpress:/var/www/html

启动:

# 启动所有服务
$ docker-compose up
# 关闭所有服务
$ docker-compose stop

IPAddress

一个基于wordpress的简单博客网站就可以使用了,本地访问。

在这里插入图片描述

DockerHub

与github很像,image文件最常用的仓库,docker pull 下来的image放在 /var/docker/image

Docker存储

还需要学习

Docker网络

还需要学习

<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参考手册。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值