Docker 安装和项目部署 | 工具学习

140 阅读3分钟

前言

记录一下关于docker的相关内容和在上面部署项目的一些经验

Docker简单介绍

干嘛的

是个打包工具

用来保证别人的代码可以在自己电脑上跑,或者自己的项目分享给别人正常运行

特点

  • 和虚拟机类似,可以看做是微型虚拟机,因为它就是把项目所需要的环境条件抽取出来写成Dockerfile脚本文件在宿主机中搭环境

知识点了解

  • 镜像(images)和容器(container):就像类和对象的关系 镜像是容器的模板,容器是镜像运行时的实例。容器可以被创建、启动、停止、删除、暂停等。
  • 镜像仓库:存放镜像的,包括本地仓库和远程仓库(Docker Hub或 阿里云 容器镜像服务)
  • Dockerfile:一个叫Dockerfile的文件,里面包含如何构建镜像的指令

Docker安装

Windows下安装

Windows下安装Docker

提前记录个问题:

关于Hyper-V和模拟器的冲突:

Windows下安装完Docker后,如果安装什么其他模拟器会关闭Hyper-V以及相关功能导致Docker无法使用 image.png 即使重新开启功能也无法再安装Docker

解决方法

其实我这个应该算是 Hyper-V异常导致的,所以要么禁用之后再启用,要么直接运行以下命令,算是重启这个服务:

bcdedit /set hypervisorlaunchtype auto

之后再重启电脑就ok了,可以愉快地开始docker旅程了。

Linux 安装

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

在Docker上部署项目

1. 首先保证这个项目可以正常运行

2. 编写Dockerfile文件

FROM golang:latest   //定制镜像所需要的基础镜像

RUN mkdir /app     //创建一个文件夹
 
WORKDIR /app       //移动到指定的目录

ADD . /app         //将当前的目录的文件都拷贝到/app目录

RUN go build -o main ./main.go //构建go二进制文件

EXPOSE 8888        //输出的端口号

CMD /app/main      //执行,有点像shell
 
  • FROM- 镜像从那里来
  • MAINTAINER- 镜像维护者信息
  • RUN- 构建镜像执行的命令,每一次RUN都会构建一层
  • CMD- 容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数
  • VOLUME- 定义数据卷,如果没有定义则使用默认
  • USER- 指定后续执行的用户组和用户
  • WORKDIR- 切换当前执行的工作目录
  • HEALTHCHECH- 健康检测指令
  • ARG- 变量属性值,但不在容器内部起作用
  • EXPOSE- 暴露端口
  • ENV- 变量属性值,容器内部也会起作用
  • ADD- 添加文件,如果是压缩文件也解压
  • COPY- 添加文件,以复制的形式
  • ENTRYPOINT- 容器进入时执行的命令

3.开始构建镜像

Dockerfile 文件的存放目录下,执行构建动作。

 $ docker build -t nginx:v3 .

最后一个·别忘打,不然就这样 image.png

这个点代表上下文路径,默认为Dockerfile所在位置

image.png 构建完成后 运行

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Docker run命令说明

可以通过docker ps查看当前运行中的容器

image.png

4.将远程镜像拉取本地运行

这里把刚刚构建的镜像托管在阿里云中

image.png

先在阿里云中创建仓库registry 登录仓库

 docker login --username=用户名 仓库地址

将镜像推送到Registry

$ docker tag [ImageId] 仓库地址:[镜像版本号]
$ docker push 仓库地址:[镜像版本号]

从Registry中拉取镜像

$ docker pull 仓库地址:[镜像版本号]