云服务器入门[腾讯云]

云服务器入门

购买了腾讯云的云服务器,开始学习如何将代码部署到服务器上,这里使用了Docker(一个应用容器引擎)来管理和发布。
使用的SSH终端为Xshell6(或者PuTTY)。
还可以用WinSCP互传文件。
重点记录Docker的使用。

avatar

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&&COPY:
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

猜你喜欢

转载自www.cnblogs.com/spacescp/p/10273958.html