Docker 可以帮助我们来构建和部署容器,我们只需要把自己的应用程序或者服务打包放进容器即可。
容器是基于镜像启动起来的,容器中可以运行一个或多个进程。
我们可以认为,镜像是Docker 生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务,所以Docker 容器就是:
安装docker
//安装docker
sudo zypper in docker
//查看docker版本
docker -v
设置docker开机启动
// 配置让docker服务岁系统自动启动
systemctl enable docker.service
// 启动docker守护进程
systemctl start docker.service
// 取消开机自动启动
systemctl disable docker.service
// 停止docker服务
systemctl stop docker.service
// 查看nginx服务的状态
systemctl status docker.service
// 重启docker服务
systemctl restart docker.service
docker镜像源
vim /etc/docker/daemon.json
// 如果权限不够可以要加上sudo
sudo vim /etc/docker/daemon.json
然后再daemon.json中添加
"registry-mirrors" : [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://cr.console.aliyun.com"
]
拉取镜像
//查看下载的镜像
docker images
// docker中拉去nginx镜像
docker pull nginx
// 查看nginx镜像 (IMAGE ID)
docker images nginx
启动一个容器
//测试nginx镜像是否可用
docker run -d --name mynginx -p 80:80 605c
// -d 指定容器以守护进程方式在后台运行
// --name 指定容器名称,此处我指定的是mynginx
// -p 指定主机与容器内部的端口号映射关系,格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口
// 605c 是nginx的镜像IMAGE ID前4位
//执行上面的docker run后生成一串字符串(容器ID)说明执行成功 ecs-78441:/etc/docker # docker run -d --name mynginx -p 80:80 605c ddc72b6047dba505f24559d181c99043be50eaa6a383549b7c0fe147266fb0b2
// 11、测试nginx镜像通过浏览器进行访问(端口要记得做映射)
将自己的项目部署到docker
1、开始将自己的vue前端项目打包到dist目录
yarn build
2、在本地创建一个Dockerfile
FROM nginx:latest
将项目根目录下dist文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下
COPY dist/ /usr/share/nginx/html/ COPY default.conf /etc/nginx/conf.d/default.conf
3、同样在本地创建一个default.conf(nginx配置文件)
server { listen 80; root /usr/share/nginx/html; index index.html index.htm; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
location / {
try_files $uri $uri/ = 404;
}
location ^~/api/ {
proxy_pass https://proapi.azurewebsites.net;
}
location ^~/so/api/ {
proxy_pass http://139.186.205.7:5000/api/;
}
location ^~/blog/ {
proxy_pass http://139.186.205.7:8090/;
}
}
4、将打包后的文件dist文件夹和Dockerfile以及default.conf上传到linux服务器
![]()
5、在服务器上cd到指定目录
cd /usr/local/aehyok/docker
6、开始通过Dockerfile创建镜像(admin指的是镜像的名字)
docker build -t admin . // 应该会提示Successfully tagged admin:latest // 说明创建成功了
7、查看刚刚创建的镜像(找到admin镜像的IMAGE ID的前四位)
docker images
8、通过镜像创建一个新的容器并运行容器
docker run -d -p 80:80 --name myreact ba04
9、查看容器
//列出容器 docker ps
// 列出所有容器(包括未运行的容器) docker ps -a
// 开启容器 (container id) docker start dsfsdfas
docker stop dfdssdf
// docker容器自启动
// 设置容器开机自动启动 docker update --restart=always xxxx
// 关闭容器开机自动启动 docker update --restart=no xxxx
https://blog.csdn.net/m0_67392661/article/details/123732115
10、通过浏览器进行访问地址即可,完美结束
- [ ] 安装docker
- <https://www.cnblogs.com/lusaisai/p/13263808.html>
- <https://blog.csdn.net/achaodzyj/article/details/116074208>
- [ ] docker常用命令
- <https://juejin.cn/post/7050304120082661407#heading-8>
- [ ] docker nginx
- <https://juejin.cn/post/6992848354753380389>
- [ ] docker 容器
- <https://www.runoob.com/docker/docker-container-usage.html>