云服务器入门
购买了腾讯云的云服务器,开始学习如何将代码部署到服务器上,这里使用了Docker(一个应用容器引擎)来管理和发布。
使用的SSH终端为Xshell6(或者PuTTY)。
还可以用WinSCP互传文件。
重点记录Docker的使用。
Docker
[针对CentOS7.5]
安装
yum install -y docker # 安装docker
systemctl start docker # 启动docker
docker search python
docker pull python
核心命令
docker images 查看镜像
docker ps 查看正在运行的容器
docker ps -a 查看所有容器
开始制作镜像 [以配置sanic环境为例]
1创建
docker run -it python "/bin/bash"
python -V
pip -V
pip list
pip install sanic
exit
docker commit xxxxxxxxxxxx sanic:latest
2更新
docker run -it sanic
pip install sanic-motor
exit
docker commit xxxxxxxxxxxx sanic 会覆盖原本镜像
备注 Docker commit
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
options说明
-a:提交的镜像作者
-c:使用Dockerfile指令来创建镜像
-m:提交时的说明文字
-p:在commit时,将容器暂停
# test
runoob@runoob:~$ docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057
test [部署main.py文件]
1 docker命令行启动容器
mkdir /var/local/myproject
cd /var/local/myproject/
vim main.py
vim Dockerfile # 关键
docker build -t zlktest .
docker run -d --name=zlktest -p 80:8000 zlktest
# test
docker run --name quotation_api -itd -p 5000:5000 -v /home/quotation:/code quotation_dev:latest
--name为容器命名;
-itd 输入输出终端,后台运行
-p host端口:容器端口 用5000是flask默认
-v host路径:容器内路径
最后是使用的镜像名(前面刚用dockerfile build出来的)
2 使用docker-compose命令部署
yum install -y docker-compose
cd /var/local/myproject/
touch docker-compose.yaml
docker-compose up -d
删除相关的命令
docker rmi xxxxxxxxxxxx
docker rm -f xxxxxxxxxxxx
更新代码后的部署
停止服务、删除容器
cd /var/local/myproject/
docker ps -a #查看容器名称
docker stop zlktest1
删除容器 zlktest1
更新main.py
docker build -it zlktest .
docker-compose up -d
这时删除过期镜像 [None]
补充
[Dockerfile]
自动化image构建
FROM sanic
WORKDIR /zlk
COPY . .
CMD ["python","main.py"]
FROM {base镜像}:必须放在DOckerfile的第一行,表示从哪个baseimage开始构建
MAINTAINER:可选,标识image作者
ADD&©:
CMD:
CMD的作用是作为执行container时候的默认行为(容器默认的启动命令)
当运行container的时候声明了command,则不再用image中的CMD默认所定义的命令
一个Dockerfile中只能有一个有效的CMD,当定义多个CMD的时候,只有最后一个才会起作用
CMD定义的三种方式:
CMD
[docker-compose.yaml]
version: "3.3"
services:
zlktest1:
image: zlktest
container_name: zlktest1
ports:
- 80:8000
expose:
- "8000"
entrypoint: ["python", "main.py"]
参考博客及文章
docker之Dockerfile指令介绍
https://www.cnblogs.com/jsonhc/p/7766841.html
docker之Dockerfile实践
https://www.cnblogs.com/jsonhc/p/7767669.html
docker之手动构建新的镜像
https://www.cnblogs.com/jsonhc/p/7766561.html
Docker 命令大全
http://www.runoob.com/docker/docker-command-manual.html