纯新手简单了解Docker

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、Docker 基本概念

  1. 镜像 (Image):Docker镜像是一个轻量、独立、可执行的软件包,它包含了运行某个应用程序所需要的所有环境,包括代码、运行时、库和配置文件。镜像是不可变的,通常从Docker Hub 等镜像仓库获取。
  2. 容器(Container):容器是镜像的一个运行实例。容器可以看作是一个轻量级、独立的虚拟机。它运行一个单一的应用程序或服务,具有自己的文件系统、CPU、内存、进程空间等。
  3. Dockerfile:这是一个文本文件,包含了创建 Docker 镜像的指令。Docker 读取 Dockerfile并根据其内容构建镜像。
  4. Docker Hub:这是一个云服务,用于存储和分发 Docker 镜像。你可以在 Docker Hub上搜索和下载公开的镜像,也可以将自己的镜像推送到 Docker Hub。
  5. 好处:开发人员可以更加快速的构建环境。用于解决平时环境搭建,环境测试,集群测试,环境不同等问题。同时运维人员可以更加方便的进行扩展和管理应用程序。而且Docker所带来的隔离性对部署的环境也更加安全。
  6. 为什么说Docker安全:Docker利用Linux内核命名空间和控制组功能来实现容器之间的隔离性。每个容器都有自己的文件系统,进程,网络等。与主机隔离从而减少攻击。其次轻量级意味这运行更快,资源消耗更低,同时减少了表面攻击。其次Docker提供了签名和验证的机制,确保镜像的完整性和来源可信性。
    通俗来说(自己的理解):Docker就是一个大箱子,每个项目都有自己的环境配置,比如mysql,A项目是用8版本的,B项目是用5版本的,那么本机可能不会去下载两个版本。这个时候可以通过Docker来实现双版本,只要编写了Dockerfile和yml文件,就可以直接丢进Docker里面运行,这也是Docker的方便之处,如图是流程图:
    图片来自于洒家不吃香菜

二、Docker的指令

  1. docker run:运行一个新的容器。例如:docker run -d -p 80:80 nginx
    这个命令从 Docker Hub 拉取 nginx 镜像,并在后台运行一个新的容器,映射本地主机的端口 80 到容器的端口 80。

  2. docker ps:列出当前正在运行的容器。

  3. docker images:列出本地存储的所有 Docker 镜像。

  4. docker build:从 Dockerfile 构建一个镜像。docker build -t myimage:latest .

  5. docker pull:从仓库拉取一个镜像。docker pull nginx

  6. docker push:将本地镜像推送到远程仓库。docker push myusername/myimage:latest

  7. docker stop:停止一个运行中的容器。docker stop container_id

  8. docker rm:删除一个停止的容器。docker rm container_id

三、怎么利用Docker运行一个github的开源项目

可能有些人都不知道怎么运行一个github项目,作者也是经常弄错环境,那有了docker之后,这个问题就很好解决了。总得来说,就是在github上面down了一个项目下来之后,去编写两个文件,一个是dockerfile文件,一个是docker-compose.yml文件,编写完成之后再去终端输入指令:docker-compose up,这个时候就会自动去pull对应的服务镜像了。

步骤

  1. 下载项目:从 GitHub 克隆或下载项目。
  2. 编写 Dockerfile:定义如何构建应用程序的 Docker 镜像。
  3. 编写 docker-compose.yml:定义和配置所有需要的服务(例如,数据库和应用程序)。
  4. 构建和启动容器:使用 Docker Compose 构建并启动所有服务。
  5. 访问和使用应用程序:通过浏览器或其他客户端访问运行中的应用程序。
  • dockerfile
# 选择基础镜像
FROM node:14

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制项目文件
COPY . .

# 暴露应用程序的端口(根据实际项目的需要修改)
EXPOSE 8000

# 启动应用程序(根据实际项目的启动命令修改)
CMD ["npm", "start"]
  • docker-compose up.yml
version: '3.1'
services:
  db:
    image: mysql:8
    container_name: mysql8-container
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
      MYSQL_DATABASE: projectdb
      MYSQL_USER: projectuser
      MYSQL_PASSWORD: projectpass
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

  app:
    build: .
    container_name: project-app
    ports:
      - "8000:8000"
    depends_on:
      - db
    environment:
      DB_HOST: db
      DB_USER: projectuser
      DB_PASSWORD: projectpass
      DB_NAME: projectdb

volumes:
  db_data:

总结

此博客只用于纯新手简单了解Docker,以及作者自学的笔记,大神轻喷,感谢!

  • 59
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值