docker学习笔记
前置知识
Nginx 项目运行和打包
安装
安装一个 windows 的 docker 略
查看 docker
Cmddocker version
使用 docker 启动一个项目
新建项目npm init vue@latest
然后一路回车 给他起名字叫docker-demo-vue
之后
1 | cd docker-demo-vue |
就可以看见项目被运行起来了
运行起来后给项目打包npm run build
创建 Dockerfile
然后在项目根目录创建 Dockerfile
注意大小写 一定不能错 而且文件没有后缀
里面的内容后面配置镜像的时候会讲到
拉取 nginx 镜像
之后拉取 nginx 镜像win+r cmd
打开控制台 输入docker pull nginx
此时会有两种情况
- 如果没有拉取过
nginx
后面会有条Status
是Downloaded newer image for nginx:lastest
- 如果之前接触过拉过 则显示
image is up to date for nginx:lastest
查看镜像
docker images
此时我们找到了 nginx
的镜像 142mb
创建 nginx
配置文件
项目根目录新建 default.conf
先不管意思 继续下面的步骤
1 | server { |
配置镜像
打开我们刚刚的 Dockerfile
写入
1 | FROM nginx |
From nginx
的意思是指定该镜像是基于nginx:latest
镜像而构成的COPY dist/ /usr/share/nginx/html/
意思是将根目录下的打包后的dist
文件夹中的所有文件复制到镜像中对应的目录下 镜像中的目录是不会变的COPY default.conf /etc/nginx/conf.d/default.conf
意思是将default.conf
替换镜像中的conf
配置
构建镜像
命令docker build -t docker-demo-vue .
-t
的意思是给镜像命名.
是基于当前目录的Dockerfile
构建镜像
然后继续运行docker images
查看镜像docker images
看到目前有两个镜像 并且镜像的名字也很清楚 大小是 142mb 基本上就是nginx
的内容
查看端口是否被占用
netstat -a
查看所有的端口netstat -ano|findstr 3000
找到对应的端口
运行容器
docker run -d -p 3000:80 --name docker-vue docker-demo-vue
-d
表示容器在后台运行-p
表示端口映射,把本机的3000
端口映射到container
的80
端口(问题:容器运行前怎么知道端口是否被占用 怎么看容器内部的端口)--name
设置容器名docker-demo-vue
是镜像的名字
查看容器
docker ps
我们就可以看到对应的 docker
容器名字 这里 nginx
由于我们没有对他命名所以他是默认的名字
修改容器名字
我们看到上述的 nginx
名字叫做 great_villani
那么对他重命名的方式就是docker rename great_villani nginx
当然实际开发中肯定是直接在 run 容器的时候就直接命名了
比如docker run --name nginx -d nginx
关闭容器docker stop container_name
尝试一下关闭 nginx
docker stop nginx
看到出现一个 nginx
就是关闭成功了
查看静态项目资源
我们可以通过指令去查看静态的打包文件curl -v -i localhost:3000