layout: postread_time: trueshow_date: truetitle: ‘docker’date: 2021-07-19img: posts/20210705/4.jpgtags: [cli]category: opinionauthor: 随步description: ‘github action’—
docker的基础使用
docker install nginx // 下载镜像docker run -p 81:80 -d --name suibu-nginx-test// 启动 nginx镜像的容器: 本机81端口映射到容器的80端口;-d后台允许,不要在控制显示,不阻塞控制台的输入;--name 容器名称docker psdocker inspect container-ID //容器的信息docker logs container-ID //容器内运行的日志docker exec -it container-ID /bin/sh // 进入容器控制台(进入虚拟机) ➜ ~ docker exec -it 85 /bin/sh# pwd/# cd /usr/share/nginx/html# ls50x.html index.html// 我们看见的lcoalhost:81映射到容器80端口看见的nginx的页面就是这个index.html// docker 可以将容器作为中转站,让用户只使用容器内的镜像作为服务,运行的文件可以是本地的文件,而不是虚拟机里的文件 ➜ ~ docker run -p 81:80 -d -v /Users/liuyan/FE/:/usr/share/nginx/html --name suibu-nginx-test-volumn nginxdockerFile 的基础语法
创建DockerFile,可以自己去构建镜像后去运行容器
FROM node:14 // 基于某一个镜像开始创建WORKDIR /app // 设置工作目录COPY . /app // 将当前文件夹下所有的文件拷贝到工作目录// 有dockerignore文件,可以在这个copy的过程中,忽略掉写入的文件# 构建镜像时,安装必备的软件,可以有多个runRUN xxx#启动容器时候,只能有一个CMDCMD xxx# 考虑脚本是在RUN里写还是CMD写的时候,想一下:构建只有一次,启动容器有多次# 环境变量ENV K1=vEXAMPLE
FROM node:14 //... read more
Docker
layout: post read_time: true show_date: true title: ‘docker’ date: 2021-07-19 img: posts/20210705/4.jpg tags: [cli] category: opinion author: 随步 description: ‘github action’ —
docker的基础使用
docker install nginx // 下载镜像
docker run -p 81:80 -d --name suibu-nginx-test
// 启动 nginx镜像的容器: 本机81端口映射到容器的80端口;-d后台允许,不要在控制显示,不阻塞控制台的输入;--name 容器名称
docker ps
docker inspect container-ID //容器的信息
docker logs container-ID //容器内运行的日志
docker exec -it container-ID /bin/sh // 进入容器控制台(进入虚拟机)
➜ ~ docker exec -it 85 /bin/sh
# pwd
/
# cd /usr/share/nginx/html
# ls
50x.html index.html
// 我们看见的lcoalhost:81映射到容器80端口看见的nginx的页面就是这个index.html
// docker 可以将容器作为中转站,让用户只使用容器内的镜像作为服务,运行的文件可以是本地的文件,而不是虚拟机里的文件
➜ ~ docker run -p 81:80 -d -v /Users/liuyan/FE/:/usr/share/nginx/html --na
me suibu-nginx-test-volumn nginx
dockerFile 的基础语法
创建DockerFile,可以自己去构建镜像后去运行容器
FROM node:14 // 基于某一个镜像开始创建
WORKDIR /app // 设置工作目录
COPY . /app // 将当前文件夹下所有的文件拷贝到工作目录
// 有dockerignore文件,可以在这个copy的过程中,忽略掉写入的文件
# 构建镜像时,安装必备的软件,可以有多个run
RUN xxx
#启动容器时候,只能有一个CMD
CMD xxx
# 考虑脚本是在RUN里写还是CMD写的时候,想一下:构建只有一次,启动容器有多次
# 环境变量
ENV K1=v
EXAMPLE
FROM node:14 // 基于某一个镜像开始创建
WORKDIR /app // 设置工作目录
COPY . /app // 将当前文件夹下所有的文件拷贝到工作目录
# 设置统一的时区
RUN ln -fs /usr/share/zoneinfo/Asia/ShangHai /etc/localtime && echo 'Asia/ShangHai' > /etc/timezone
RUN npm set registry 国内npm镜像
RUN npm i
#启动
CMD echo $SERVER_NAME && npm run dev && npx pm2 log
#占据控制台阻塞的,一直占据控制台
#环境变量
ENV SERVER_NAME=""
#在js代码中也可以使用 process.env.SERVER_NAME
dockerFile 构建镜像
依据dockerFile去构建出一个镜像
docker build -t <name> .
# 最后 . 指Dockerfile在当前文件夹下; <name> 镜像的名称
docker images
➜ docker-study docker build -t suibu-test-image .
➜ ✗ docker run -p 9090:3000 -d --name suibu-server suibu-test-image
docker ps
docker logs containerID
docker rm containerID
docker rmi imageID
docker compose
多个容器组合,软件设计和开发,有单一职责原则,每个容器只负责一个服务。如果开发环境需要多个服务,就需要启动多个docker容器,连通多个docker容器,就需要docker compose

Comments