docker学习

1.docker常用的命令

docker ps

docker info

docker run hello world

docker images

docker version

docker --version

docker system info

 

2.docker引擎升级(以Ubuntu为例)

2.1停止docker守护程序

2.2移除旧版本的docker

apt-get update

apt-get remove docker docker-engine docker-ce docker.io -y

2.3安装新版本的docker

wget -qO- https://get.docker.com/  | sh

2.4配置新版的docker为开机自启动

systemctl  enable docker

2.5确保容器重启成功

docker container ls

docker service ls

 

3.docker储存驱动的选择

在linux上可选择的储存驱动包括AUFS(最原始也是最老的)、Overlay2(可能是未来最佳选择)、DeviceMapper、Btrfs、ZFS

修改/etc/docker/daemon.json

{

   "storage-driver": "overlay2" 

}

通过docker system info来检查docker当前的储存驱动类型

 

4.镜像&容器

查看所有的镜像

docker image ls

从镜像来启动容器

docker container run

从linux中启动容器

docker container run -it ubuntu:latest /bin/bash  

从Windows中启动容器

docker container run -it microsoft/powershell:nanoserver pwsh.exe

(-it 参数会将shell切换到容器的终端)

 

5.

docker container run 和docker service create可以从某个镜像启动一个或者多个容器

docker image pull ubuntu:latest 拉取一个最新的ubuntu镜像

docker image pull <repo>:<tag> 从官方仓库拉取镜像

示例

docker image pull mongo:3.3.11

如果希望从第三方奖项库安装,则需要在第三方镜像仓库前面加上第三方镜像仓库服务的DNS名称

示例

docker image pull gcr.io/nigelpoulton/tu-demo:v2

6.

docker image ls --filter dangling=true

返回悬虚镜像,就是没有标签的镜像。

docker image prune 移除所有的悬虚镜像。

7.docker镜像搜索

docker search nigelpoulton 该命令会搜索所有NAME字段中包含特定字符串的仓库。这里命令返回既有官方的,也有非官方的。

可以通过使用 --filter  "is-official=true" 只显示官方的镜像  
docker search nigelpoulton --filter  "is-official=true"

注意,search默认只显示25条数据,可以通过 --limit参数来增加 返回的行数

8查看镜像分层

docker image inspect ubuntu:latest

每一个镜像都有一个digest的,可以通过 --digests参数来查看本地的镜像 
docker image ls --digests alpine

也可以通过digest来pull镜像

docker image pull alpine@sha256:c0xxxx...xxx

9.删除镜像

docker image rm 

docker image rm $(docker image ls -q) -f 删除所有的镜像

 

10.容器

运行容器  docker container run <image> <app>

示例

docker container run -it ubuntu /bin/bash (-it参数可以将当前终端连接到容器的shell终端之上)

docker container start 启动该容器

docker container stop 手动停止该容器

docker container rm 删除容器

 

11.应用的容器化

(1)编写应用代码

(2)创建一个Dockerfile,其中包含对当前应用的描述,依赖以及该如何运行这个应用

(3)对该Dockerfile执行docker  image build命令

(4)等待Docker将应用程序构建到Docker镜像中

分析Dockerfile文件

FROM   xxx 表示以xxx镜像作为当前镜像的基础

LABEL maintainer="will@xxx.com" 表示规定当前镜像的维护者为will@xxx.com

RUN apk add --update nodejs nodejs-npm 表示使用基础镜像的apk包管理器将nodejs和nodejs-npm安装到当前镜像下。RUN指令表示会在基础镜像之上,新建一个镜像层来储存这些安装内容

COPY public/   data/public 表示将应用的public复制到当前镜像中,并且新建一层来储存data/public。

RUN npm  install 会根据package.json中的配置信息来安装相关的依赖包,会新建一层镜像层。

EXPOSE 8080 来设置TCP对外的提供服务的端口,不会产生新的镜像层。

ENTRYPOINT ["node", "./app.js"] 指令来设置当前镜像的入口程序。

docker image build -t web:latest  .   << 不要忘记最后有个.表示Docker在进行构建时,使用当前目录作为构建上下文

可以通过docker image inspect web:latest来确认刚刚构建的镜像配置是否正确

 

推送镜像到远端仓库

推送需要提供Register(镜像仓库服务)Repository(镜像仓库)Tag(镜像标签),无需对Register和tag指定值,因为会有默认值。

docker打标签命令 docker image tag <current-tag> <new-tag> 其作用是为指定的镜像添加一个额外的标签,并且不需要覆盖已经存在的标签。

示例: docker image tag web:latest will/web:latest

推送代码示例 docker image push will/web:latest(把will 替换成自己的Docker ID)

 

运行容器

docker container run -d --name c1 -p 80:8080  web:latest
-d参数的作用是让应用程序以守护线程的方式在后台运行

-p 80:8080的作用是让主机的80与容器的8080端口进行映射

12 查看构建镜像的过程中执行了哪些指令

可以通过 docker image history web:latest 

看到SIZE不为0的都是新建镜像层。

也可以通过docker image inspect  web:latest来查看

 

13 生产环境的多阶段构建。

对于生产环境的镜像而言,将其缩小到仅包含运行应用说必须的内容即可。

每一个RUN都会新增一个镜像层,通过使用&&连接多个命令以及使用\换行的方法,将多个命令包含在一个RUN指令中,这是一个值得提倡的方式。

在一个Dockerfile中引入多个FROM构建多个环境的镜像

在构建linux镜像时,若使用apt包管理器,则可以在执行apt-get install命令增加 no-install-recommends参数,这样能确保apt 仅安装核心的依赖,而不是推荐和建议的包,能显著减少不必要包的下载数量。

<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、付费专栏及课程。

余额充值