部署环境:Centos
一、安装 Docker
# 安装
yum install docker -y
# 查看版本
docker version
# 启动
service docker start
# 测试
docker run hello-world
# 设置开机启动
sudo systemctl enable docker
二、配置 Dockerfile
根目录下新增 Dockerfile:
# 基于 node 镜像
FROM node
# 复制宿主机的 start.sh 到 容器 /etc/start.sh
ADD ./build/start.sh /etc/start.sh
# 设置初始命令执行目录
RUN mkdir /www
WORKDIR /www
# 利用缓存
ADD package.json /www
ADD package-lock.json /www
RUN npm ci
COPY . /www
EXPOSE 7414
CMD ["/bin/bash","/etc/start.sh"]
相关 Node 脚本
./build/start.sh
:
#!/bin/bash
# 启动 node 服务
npm run start;
三、构建镜像
docker build -t project/example:v1 . -f ./Dockerfile
四、运行容器
后台运行容器,并且开放宿主端口 7415 至容器端口 7414。
DockerBuild.sh
:
echo "Start Build Docker";
# ProjectName/SubName
preVersion="multipage/dist";
# Port
visitPort="7415";
# Stop
echo "Stop Docker Containers";
docker ps;
docker ps|awk '{if (NR!=1) print $1}'| xargs docker stop;
# Remove
echo "Remove Docker Image";
docker ps -a -q;
docker rm $(docker ps -a -q);
# Generate
randomVersion=${RANDOM};
combinedVersion="${preVersion}:v${randomVersion}"
echo "Generate random version: ${combinedVersion}";
# Build
echo "Build Docker Image: ${combinedVersion}";
docker build -t ${combinedVersion} . -f ./Dockerfile;
# Run
echo "Run Docker";
docker run -d -p ${visitPort}:80 ${combinedVersion};
# Notification
echo "Complete, Visit: http://localhost:${visitPort}";
备注:-d
后台运行,-it
保持终端交互,两个命令互斥只可取其一。
测试端口
telnet 127.0.0.1 7415
五、关闭容器
# 查看所有运行中的容器
docker ps -q
# 关闭所有运行中的容器
docker kill $(docker ps -q)
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者后除和本文原始地址:https://blog.mazey.net/1762.html
(完)
2023年10月23日
```
yum install docker nginx golang epel-release supervisor git -y
```
2022年11月16日
Example 1:
```
docker exec -it 5f2e104b9175 /bin/sh
```
2022年11月16日
MAC
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
```
brew install --cask docker
```
2022年11月16日
https://phase2.github.io/devtools/common-tasks/ssh-into-a-container/
docker exec -it /bin/bash