IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker应用实践 -> 正文阅读

[系统运维]docker应用实践

由于项目部署的现场环境通常为离线环境,因此需要将项目打包为docker文件,便于部署。

1. docker安装

yum install docker -y

设置自启动

systemctl start docker
systemctl enable docker

2. 制作包含中文语言环境和python3服务的基础centos镜像

此处采用dockerfile文件进行制作,首先拉取一个原始的centos7镜像。

docker pull docker.io/centos:7

编写dockerfile文件的内容。

# 指定操作的镜像
FROM docker.io/centos:7

# 安装ssh服务
RUN yum install -y openssh-server
RUN yum install -y passwd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key
RUN echo "123456" | passwd --stdin root  # 系统密码,可自行更改
ADD run.sh /run.sh
EXPOSE 22
CMD ["/run.sh"]

# 安装centos的yum源
RUN yum -y install epel-release
RUN yum repolist
RUN yum -y install vim wget gcc make libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel python3-devel

# 指定语言,防止中文日志乱码
RUN yum -y update \
    && yum install kde-l10n-Chinese -y \
    && yum reinstall glibc-common -y \
    && localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 \
    && echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf \
    && source /etc/locale.conf
ENV LC_ALL=zh_CN.UTF-8 \
    LANG=zh_CN.UTF-8

# 安装python 3.6.8
WORKDIR /opt/install
RUN wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
# 解压
RUN tar -zxvf Python-3.6.8.tgz
WORKDIR Python-3.6.8
RUN ./configure
RUN make&&make install
RUN python3 -m pip install --upgrade pip

# 设置/opt为进入容器的默认位置
WORKDIR /opt

run.sh文件的内容如下,与dockerfile处于同一目录下:

#! /bin/bash
/usr/sbin/sshd -D

创建镜像

docker build -t ch_centos:0 .

3. 更新centos的sqlite3版本

一个很离谱的问题:centos7自带的sqlite3版本是3.7,然而启动django时sqlite3版本要求>=3.8,因此第2节中的基础镜像在打包django服务时会报错。

  1. 首先创建基于ch_centos:0生成的容器,并进入容器
docker run -tid --name base --privileged=true -t ch_centos:0  /usr/sbin/init
docker exec -it base /bin/bash
  1. 更新sqlite3版本
# 下载源码
# 本人习惯把安装包下载/opt/install的目录下
cd install
wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
# 编译
tar zxvf sqlite-autoconf-3290000.tar.gz 
cd sqlite-autoconf-3290000/
./configure --prefix=/usr/local
make && make install

# 替换系统低版本 sqlite3
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
echo "/usr/local/lib" > /etc/ld.so.conf.d/sqlite3.conf
ldconfig
# 查看系统环境中的sqlite3版本
sqlite3 -version
# 查看python3中的sqlite3版本,二者一致即可
python3
import sqlite3
sqlite3.sqlite_version

在进入python3中检查sqlite3时,出现了另一个问题,python3运行出现警告“UserWarning:Could not import the lzma module .Your installed Python is incomplete.”
在这里插入图片描述
补充lzma的安装,首先下载相关安装包

yum install xz-devel -y
yum install python-backports-lzma -y
pip3 install backports.lzma

cd到python3的依赖包目录下,修改lzma.py

cd /usr/local/lib/python3.6
ls
vim lzma.py

修改内容如下:

try:
    from _lzma import *
    from _lzma import _encode_filter_properties, _decode_filter_properties
except ImportError:
    from backports.lzma import *
    from backports.lzma import _encode_filter_properties, _decode_filter_properties

在这里插入图片描述
上述操作完成后,退出镜像,将base容器制作为新镜像,至此,一个基础的镜像已经完成。后续项目的打包可以在该镜像下进行具体项目文件的更新。

exit
docker commit base ch_centos:1
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:32:08  更:2021-11-18 11:32:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:52:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码