写给前端:一文了解Docker,快速掌握重点

Docker 是什么

  • 一个应用打包、分发、部署的工具
  • 一个轻量的虚拟机,只虚拟软件需要的运行环境

为什么要使用 Docker?

  • 跨平台,你可以在各种系统里安装docker运行你的服务
  • 性能好,只虚拟软件所需运行环境,最大化减少没用的配置
  • 自动化,一个命令就可以部署运行你的项目
  • 无差异部署

流程简介

  • 在 Windows or Mac 上开发、测试
  • 打包为 Docker 镜像
  • 在docker环境里,一个命令跑起来你的项目

重要名词简介

  • 镜像:就像一个软件包,复制粘贴到其他电脑,一样可以安装使用
  • 容器:一个镜像可以安装N次,每次都可以生成不一样的容器,我们可以用name进行区分,它就像是软件安装以后,软件运行的环境,彼此隔离,我们称它为容器

安装

  • 官方文档
  • 手把手教你进行MAC安装Docker
  • 手把手教你进行Linux安装Docker
  • 手把手教你进行Windows安装Docker

注意重点(如果你不设置这些的话,服务器重启或者docker 服务重启以后,你的项目会无法自动启动哦~)

设置docker开机启动
查看已启动的服务
systemctl list-units -lype=service

查看是否设置开机启动
systemctl list-unit-files | grep enable

设置开机启动
systemctl enable docker.service

关闭开机启动
systemctl disable docker.service
设置docker容器自动启动
启动时加restart-always
docker run -tid -name 容器id -p 端口号 -restart-always -v 挂载

已经启动的项目.使用update更新:
docker update --restart = always 容器id

restart可选项
  • no 不自动重启容器(这个是默认value)
  • on-failure 容器发生error而退出(容器退出状态不为0)重启容器
  • unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
  • always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器

镜像加速

方案一:阿里云:搜索容器服务-镜像加速器

写给前端:一文了解Docker,快速掌握重点_第1张图片

方案二:DaoCloud 道客加速器

配置 Docker 镜像站,该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。更多详情请访问文档。

方案三:腾讯加速器
https://mirror.ccs.tencentyun.com
如果遇到无法下载的镜像,可以参考我的文章:
  • Coolify系列01- 从0到1超详细手把手教你上手Heroku 和 Netlify 的开源替代方案
  • Docker使用阿里云拉取配置源也无法拉取的镜像-github镜像镜像gcr.io

关于使用:举个栗子

我们执行下面的这个命令,就可以跑起来redis了
docker run -d -p 6379:6379 --name redis redis:latest
  • run docker 运行软件
  • -d 后台运行,如果不用这个,关掉命令行就会停止运行
  • -p 6379:6379把容器内部的端口暴露到宿主机 宿主机:容器内
  • –name redis 命名
  • redis:latest下载最新版本的redis镜像

有任何不懂的命令,可以在这里搜索,点击这里

制作自己的镜像

编写 Dockerfile
  • 参考我的这篇文章:手把手教你写Dockerfile以及测试
Build镜像:命令参考文档
docker build -t test:v1 .
  • build 根据Dockerfile构建镜像
  • -t test:v1 -t指定镜像名字,版本号,
  • . 点代表在当前目录
运行镜像:命令参考文档
docker run -p 8080:8080 --name test-hello test:v1

-p 映射容器内端口到宿主机
–name 容器名字
-d 后台运行

常用命令

docker ps 查看当前运行中的容器
docker images 查看镜像列表
docker rm container-id 删除指定 id 的容器
docker stop/start container-id 停止/启动指定 id 的容器
docker rmi image-id 删除指定 id 的镜像
docker volume ls 查看 volume 列表
docker network ls 查看网络列表

目录挂载

为什么使用目录挂载?
  • 修改代码想要立即生效,不想再build run
  • 容器里的数据不可以丢失
如何挂载:文档参考
  • bind mount 把宿主机目录映射到容器内,适合挂代码目录和配置文件,可挂到多个容器上
  • volume 由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据。可挂到多个容器上
  • tmpfs mount 适合存储临时文件,存宿主机内存中,不可多容器共享。
关于挂载,举个栗子:
  • 挂载后,容器里的代码就会替换为你挂载的代码
  • bind mount 方式用绝对路径 -v D:/code:/app
  • volume 方式,只需要一个名字 -v db-data:/app
    示例:
docker run -p 8080:8080 --name test-hello -v D:/code:/app -d test:v1

容器通信:文档参考

  • 容器互通,需要将其放到同1个网络中
创建一个名为xiaojin的网络:
docker network create xiaojin
运行 Redis 在 xiaojin 网络中,别名redis
docker run -d --name redis --network xiaojin --network-alias redis redis:latest
容器中的代码想要访问redis,就可以这么写
  • 步骤一:使用网络别名
  • 步骤二:运行项目,使用同一个网络
docker run -p 8080:8080 --name test -v D:/test:/app --network xiaojin -d test:v1

Docker-Compose

为什么使用Docker-Compose?
  • 想要一个容器运行多个项目,比如前后端项目,或者其他依赖项目
  • 懒得设置网络什么的,太麻烦,直接全运行到同一个容器
怎么使用
  • 安装文档
  • 运行docker-compose检查是否安装成功
  • 编写脚本docker-compose.yml,将项目多个服务集合在一起-参考文档
关于yml文件,举个栗子
version: "1.0"

services:
  app:
    build: ./
    ports:
      - 8080:8080
    volumes:
      - ./:/app
    environment:
      - TZ=Asia/Shanghai
  redis:
    image: redis:5.0.13
    volumes:
      - redis:/data
    environment:
      - TZ=Asia/Shanghai

volumes:
  redis:

运行服务

在docker-compose.yml 文件所在目录,执行:

docker-compose up -d
docker-compose常用命令
  • 查看运行状态:docker-compose ps
  • 停止运行:docker-compose stop
  • 重启:docker-compose restart
  • 重启单个服务:docker-compose restart service-name
  • 进入容器命令行:docker-compose exec service-name sh
  • 查看容器运行log:docker-compose logs [service-name]

连接到远程Docker引擎

为什么要远程访问Docker?
  • 可以使用http协议,获取json格式数据,很方便
  • 使用代码控制镜像,so easy
怎么配置才可以远程访问呢?
  • 参考我的这篇文章:保姆级手把手教你如何使用HTTP远程连接Docker
今天就写到这里啦~
  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

你可能感兴趣的:(面向全栈,docker,容器,运维)