linux 安装docker
yum在线安装
在 CentOS 7安装docker要求系统为64位、系统内核版本为 3.10 以上,可以使用以下命令查看
uname -r
#3.10.0-1160.11.1.el7.x86_64
1. 查看是否已安装docker列表
yum list installed | grep docker
2. 安装docker
yum -y install docker
-y表示不询问安装,直到安装成功,安装完后再次查看安装列表
3. 启动docker
systemctl start docker
4. 设置为开机启动
systemctl enable docker.service
5. 查看docker服务状态
systemctl status docker
上图表示docker已成功启动
离线安装
1. 下载安装包
安装包官方地址:https://download.docker.com/linux/static/stable/x86_64/
,可以先下载到本地,然后通过ftp工具上传到服务器上,或者在服务器上使用命令下载
wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.3-ce.tgz
2. 解压
tar -zxvf docker-18.06.3-ce.tgz
3. 将解压出来的docker文件复制到 /usr/bin/ 目录下
cp docker/* /usr/bin/
4. 在/etc/systemd/system/目录下新增docker.service文件,内容如下,这样可以将docker注册为service服务
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
此处的–insecure-registry=127.0.0.1(此处改成你私服ip)设置是针对有搭建了自己私服Harbor时允许docker进行不安全的访问,否则访问将会被拒绝。
5. 启动
给docker.service文件添加执行权限
chmod +x /etc/systemd/system/docker.service
重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
systemctl daemon-reload
启动
systemctl start docker
设置开机启动
systemctl enable docker.service
查看docker服务状态
systemctl status docker
使用docker 封装flask项目
装备
1. 导出项目第三方依赖包至requirements.txt
pip freeze >requirements.txt
2. 创建gunicorn.py
Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server。
和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。
# 监听端口
bind = '0.0.0.0:8000'
# 工作模式
worker_class = 'gevent' # 采用gevent库,支持异步处理请求,提高吞吐量 除了gevent还有eventlet
# 并行工作进程数(我采用跟CPU核心数一致)
# workers = multiprocessing.cpu_count() * 1
workers = 5 # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
# 设置守护进程
daemon = False
# 显示现在的配置,默认值为False,即显示。
check_config = False
# 设置日志记录水平
loglevel = 'debug'
# 设置错误信息日志路径
errorlog = '/home/slp/Project/StockQTS/logs/error.log' #/root/project/BlueWhale/logs/error.log /home/slp/Project/BlueWhale/logs/error.log
# 设置访问日志路径
accesslog = '/home/slp/Project/StockQTS/logs/access.log' #/root/project/BlueWhale/logs/access.log /home/slp/Project/BlueWhale/logs/access.log
可以使用gunicorn命令来测试是否可以正确运行,命令如下,打开网址127.0.0.1:80,将会打开我们的网站。
gunicorn manage:app -c gunicorn.py
3. 创建Dockerfile文件
FROM python:3.7
WORKDIR /home/slp/Project/StockQTS
COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
COPY . .
CMD ["gunicorn", "manage:app", "-c", "./gunicorn.py"]
构建Docker镜像
1. 进入项目文件夹
cd /home/slp/Project/StockQTS
2. 构建镜像,输入如下命令
sudo docker build -t 'stack_flask' .
然后会执行六步操作,依赖多的话安装依赖会比较费时间。
3.查看镜像
sudo docker images
自制的镜像就弄好了,可以在本地跑跑,实验下
上传镜像到阿里云仓库
1. 在阿里云上创建一个自己的Docker仓库。
2. 上传镜像
上传镜像之前需要在仓库管理–>访问凭证中设置登录密码。
登录
sudo docker login --username=你的阿里云用户名 registry.cn-shenzhen.aliyuncs.com
Password:
Login Succeeded
输入密码,密码就是你刚设置访问凭证的密码
推送
输入以下两行命令,将镜像推送到Registry
docker tag [镜像的ID] registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:[镜像版本号]
执行完就可以了。
3. 拉取镜像
sudo docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名:[镜像版本号]
查看是否拉取 下来
sudo docker images
4. 运行
sudo docker run -itd -p 8000:8000 --name stock_flask
那么到这里 Flask 项目已经成功部署。更新项目的时候,维护好配置文件,build一下,push 上去,在服务器 pull 下来,重新运行即可。