Docker的思想来自于集装箱
镜像就是封装好的环境,保留一份可以到处运行,当需要在一个新服务器上部署环境的时候就可以直接运行镜像,不需要再装一次环境
镜像
docker 内可创建容器即 image 镜像(镜像可以理解为配置好环境的压缩包,启动以后可以创建容器)
docker run nginx:alpine
创建简洁版的nginx镜像
docker images
可查看镜像
REPOSITORY: 来自于哪个仓库;
TAG: 镜像的标签信息,比如 5.7、latest 表示不同的版本信息;
IMAGE ID: 镜像的 ID, 如果您看到两个 ID 完全相同,那么实际上,它们指向的是同一个镜像,只是标签名称不同罢了;
CREATED: 镜像最后的更新时间;
SIZE: 镜像的大小,优秀的镜像一般体积都比较小,这也是我更倾向于使用轻量级的 alpine 版本的原因;
docker inspect REPOSITORY
可查看镜像的详细信息例如 docker inspect nginx
docker rmi REPOSITORY 删除镜像
容器
docker 可启动镜像创建容器,一个镜像可创建多个容器(每个容器就是一个独立的小型Linux系统)
docker run --name=smartPacking -dit -p 3002:80 -v D:\test-peizhi\www:/usr/share/nginx/html/ -v D:\test-peizhi\www:/etc/nginx/nginx.conf -v D:\test-peizhi\logs\:/var/log/nginx nginx:apline
smartPacking 就是容器的名称,-p 3002:80即端口映射,本地访问localhost:3002,就会访问容器内部的80端口
docker ps
可查看正在运行的容器
container ID 就是容器的id,Image 就是启动的容器名称 状态 up表示正在运行中,ports表示端口映射
docker ps -a
可查看所有的容器
docker inspect containerID
可查看容器的详细信息
docker stop containerID
表示停止某个容器
部署vue 项目
- 编译vue 项目
- 将vue 项目放dist文件夹中的文件放到 一个根目录下 我放的是www文件夹下
- 在www文件夹的同级目录下 放 nginx.conf 文件 注意在nginx容器的nginx.conf文件中需要包含
include /etc/nginx/conf.d/*.conf;
这句话和第二个命令中的映射文件夹对应(-v D:\test-peizhi\www:/etc/nginx/nginx.conf )nginx.conf是一个文件夹
server {
listen 6666;
charset utf-8;
client_max_body_size 75M;
location / {
alias /usr/share/nginx/html/;
}
location /L {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
uwsgi_send_timeout 300;
uwsgi_connect_timeout 300;
uwsgi_read_timeout 300;
}
}
-
在www文件夹的同级目录下新建一个log文件夹
-
运行两个命令 第一个 docker run nginx:alpine
第二个
docker run --name=smartPacking -dit -p 3002:80 -v D:\test-peizhi\www:/usr/share/nginx/html/ -v D:\test-peizhi\www:/etc/nginx/nginx.conf -v D:\test-peizhi\logs\:/var/log/nginx nginx:apline
注意事项
1.对应的文件夹变一下就可以了
2.location root后的文件夹需要和命令中的文件夹对应
3.nginx.conf中监听的端口需要和第二命令中容器的端口对应
完成
补充几个常用命令
- docker ps -a查看所有容器
- docker start id 启动容器
- docker exec -it id /bin/sh 进入容器