不同环境 配置不同,本地开发的项目依赖于本地环境,如何能在不同环境任意执行?
Docker就是用来解决这一问题的。简而言之,Docker打包时打包了项目本身及其依赖。当这个项目运行时,会在Docker的虚拟容器中运行,无需担心不同的环境。
Win下载地址:https://docs.docker.com/desktop/install/windows-install/
MAC下载地址:https://docs.docker.com/desktop/install/mac-install/
安装直接无脑就行
docker version
Docker是服务器-客户端架构,命令行运行Docker时,需要本地起服务。
Win需要以管理员身份打开cmd
net start com.docker.service
net stop com.docker.service
启动好了服务之后,可以继续进行操作
image文件里面打包了 项目 及其 依赖 ,只有通过image文件我们才能生成一个Docker容器。
也就是说,image是Docker的模板,一个image文件可以生成多个同时运行的Docker实例
docker image lsdocker image rm [imageName]这里备注一下:官方image文件仓库,在前人基础上再加工image文件。快捷高效。
先从简单的helloworld学起
docker image pull library/hello-worldocker image pull是抓取 image 文件的命令library/hello-world是 image 文件在仓库里面的位置library是 image 文件所在的组hello-world是 image 文件的名字。官方提供的 image 文件,都放在[library](https://hub.docker.com/r/library/)组里面,所以是默认组,可以省略。简化写法:
docker image pull hello-world

docker container run命令会从 image 文件,生成一个正在运行的容器实例。
这个命令也会自动从仓库中pull image文件。所以步骤1可有可无。
docker container run hello-world
一般容器会自动终止,不能自动的手动kill它
docker container kill [containID]image生成的容器实例,也叫容器文件。
一旦容器生成会有两个文件,image文件和容器文件。关闭容器不会删除容器文件,只是容器停止运行罢了
# 列出本机正在运行的容器
docker container ls
# 列出本机所有容器,包括终止运行的容器
docker container ls --all
# 删除容器文件
docker container rm [containerId]
dockerignore文件:打包忽略文件
# 排除这三个路径,不打包进image文件中
.git
node_modules
npm-debug.logDockerfile文件:一个文本文件,用来配置image。Docker根据该文件生成二进制的image文件。
FROM node:16.15.0:该 image 文件继承官方的 node image,冒号表示标签,这里标签是16.15.0,即16.15.0版本的 node。COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。WORKDIR /app:指定接下来的工作路径为/app。RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。FROM node:16.15.0
COPY . /app
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000docker image build -t react-commentlist:v0.1 **.**查看本机所有image,就能看到我们新建的image啦!
docker image ls
p参数:容器的 3000 端口映射到本机的 8000 端口。it参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。react-commentlist:v0.1:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。/bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shelldocker container run -p 8000:3000 -it react-commentlist:v0.1 /bin/bash
可以在后面输入 npm start 启动项目。
打开浏览器,输入http://127.0.0.1:8000 就可以访问项目了。
Ctrl + c 停止 Node 进程
Ctrl + d (或 exit)退出容器