Skip to content

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


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>