分类: IT技术

  • openEuler2309中通过docker-compose部署Anaconda3且运行jupyter notebook服务

    openEuler是国内基于Linux内核比较成熟完善的国产操作系统。Anaconda3是一个集合了python语言及其各项科学计算、人工智能开发的完整开发平台,而jupyter notebook是anaconda3下非常好用的一款多用途开发调试平台。

    docker工具是业界最通用的容器工具,而docker-composse是docker官方提供的自动化容器管理与使用工具,可以让我们方便的管理使用容器技术。

    假设我们的openEuler已安装完毕,网络已调试完成,且可以连接互联网。

    1、安装docker

    yum install docker

    在上面的命令执行完成后docker应该就下载安装好了。

    2、检查docker是否安装成功

    docker  --version

    执行这个命令系统会显示安装好的docker的版本。我的电脑显示为:

    3、让docker服务开机自启动

    systemctl enable docker   
    systemctl start docker

    运行完这两个命令docker服务就加入了系统自启动列表,且我们已启动了docker服务。我们可以通过下面的命令检查docker服务运行状态:

    systemctl status docker

    在我的电脑上运行结果如下:

    出现上面的提示表示docker服务已正常。

    4、更改docker访问仓库

    因为国内政策原因,docker默认的存储库因内已访问不正常,需要修改docker配置,将存储库改为国内的镜像仓库。

    在/etc/doker目录下创建一个daemon.json文件,文件内容如下:

    {  
      "registry-mirrors": ["https://docker.m.daocloud.io"] 
    }  
    

    5、安装docker-compose工具

    yum install docker-compose

    安装完成后可以输入下面的命令确认工具是否安装成功:

    docker-compose --version

    正常情况下电脑会显示如下:

    6、建立anaconda-jupyter系统文件夹。

    我将anaconda-jupyter相关配置文件及数据文件夹放在/home/wcs/目录下。

    mkdir /home/wcs/anaconda-jupyter
    

    7、建立docker-compose.yml文件

    进入/home/wcs/anaconda-pupyter文件夹,在此目录下建立docker-compose.yml文件,文件内容如下:

    version: '3.3'
    
    services:
      jupyter:
        image: continuumio/anaconda3:latest  # Anaconda3基础镜像
        container_name: anaconda_jupyter
        ports:
          - "8888:8888"                       # 映射端口
        volumes:
          - ./notebooks:/home/jovyan/work    # 持久化数据
        environment:
          JUPYTER_TOKEN: "your_token"    # 可选,设置访问令牌
          
        command: >
          /bin/bash -c "source activate root &&
          /opt/conda/bin/jupyter-notebook
          --ip=0.0.0.0 --allow-root --no-browser --NotebookApp.token='${JUPYTER_TOKEN:-}'   --notebook-dir=/home/jovyan/work"
        restart: unless-stopped

    8、利用docker-compose命令启动容器

    docker-compose命令启动时会从当前目录下读取docker-compse.yml配置从而启动相对应的容器,因此我们需要先进入我们的/home/wcs/anaconda-pupyter目录。

    cd /home/wcs/anaconda-pupyter
    docker-compose up -d

    执行完上面的命令后,docker会下载对应的容器映像,待下载完成后就会正确运行此容器。

    9、查看运行的容器

    docker ps

    系统显示如下:

    当系统显示上述信息时,anaconda3和jupyter notebook服务已正常运行了,它工作端口为8888,但此时还无法从别的电脑上访问这个服务,因为系统防火墙未开放相关的端口。

    10、从防火墙开启tcp/8888端口

    firewall-cmd  --permanent --zone=public --add-port=8888/tcp

    执行完这个命令后,我们从其它电脑上即可以访问这个服务器上的jupyter notebook服务了。

    在浏览器中输入相对应的网址http://192.168.0.19:8888/即可访问了。

    11、为jupyter notebook访问服务加上密码,保证系统安全性。

    在上面的jupyter中我们执行下面的python代码生成一个密码。

    from notebook.auth import passwd  
    print(passwd('your_password'))

    执行这个python代码显示如下:

    上面生成的一串argon2的加密字符串即是您设定密码”your_password”的加密码。将这串字符复制出来。

    在我们前面的docker-compose.yml文件夹中创建一个.env的环境变量设定文件(注意文件名前面的“.”)。文件内容如下:

    JUPYTER_PASSWORD=argon2:$argon2id$v=19$m=10240,t=10,p=8$2c/omfN42cqdjIHwCeJHPg$ccMenyCzQPuqGlgqKwSaVYlBE5Cp0zbygvs47t/osbE

    你可能会说环境变量设定不是一般都是在yml的environment:这个小节么?是的,一般情况是这样,但是我们的加密码字符串中有类似于”$”这样的yaml特珠字符串,会造成yml文件解析错误,所以才要加入.env这个外置环境变量设置文件。这个问题也让我困扰了很久。

    12、关闭现在的容器,修改docker-compose.yml,加入jupyter的访问密码。

    docker-compose down
    

    修改docker-compose.yml,修改后的文件内容如下:

    version: '3.3'
    
    services:
      jupyter:
        image: continuumio/anaconda3:latest  # Anaconda3基础镜像
        container_name: anaconda_jupyter
        ports:
          - "8888:8888"                       # 映射端口
        volumes:
          - ./notebooks:/home/jovyan/work    # 持久化数据
        environment:
          JUPYTER_TOKEN: "js12345678"    # 可选,设置访问令牌
          JUPYTER_PASSWORD: ${JUPYTER_PASSWORD}   #可选,读取.env文件中的JUPYTER_PASSWORD环境变量
    
        command: >
          /bin/bash -c "source activate root &&
          /opt/conda/bin/jupyter-notebook
          --ip=0.0.0.0 --allow-root --no-browser --NotebookApp.token='${JUPYTER_TOKEN:-}'  --NotebookApp.password='${JUPYTER_PASSWORD}' --notebook-dir=/home/jovyan/work"
        restart: unless-stopped
    

    再次启动容器后,再访问这个网址后就需要用密码才能正确访问了。

    docker-compose up -d

    访问时需要密码:

    13、将此容器设定为一个系统服务,随系统开关机可以自动启动。

    在/home/wcs/anaconda-jupyter/文件夹下建立一个anaconda-jupyter.service文件

    文件内容如下:

    [Unit]  
    Description=Docker Compose anaconda-jupyter  
    After=docker.service  
    Requires=docker.service  
    
    [Service]  
    Restart=always  
    WorkingDirectory=/home/wcs/anaconda-jupyter/
    ExecStart=/usr/bin/docker-compose up  
    ExecStop=/usr/bin/docker-compose down  
    
    [Install]  
    WantedBy=multi-user.target
    

    文件建立好后,执行下面的操作:

    cp /home/wcs/anaconda-jupyter/anaconda-jupyter.service /usr/lib/systemd/system
    systemctl enable anaconda-jupyter.service

    这样即完成了全部的安装。

  • win10禁止远程桌面拷贝文件

    在现在疫情状态下,很多公司都会用到居家办公这种方式让员工在家处理公司的文件,Windows中的远程桌面连接是最常用的方式了,远程桌面连接这种方式可以很方便的在本地与远程计算机间复制文件,有些公司可能为了安全考虑不想让远程桌面连接时可以在远程与本地间复制文件,因此需要禁止远程桌面复制文件。而Win10系统是现在主流的系统,下面以Win10为例说明操作方法。

    1,在提供远程桌面服务的电脑上执行gpedit打开“本地组策略编辑器”

    2、选择“计算机配置”、“windows组件”、”远程桌面服务”。

    0

    0

    启用“不允许剪切板重定向”、“不允许COM端口重定向”、“不允许客户端打印机重定向”、“不允许LPT端口重定向”、“不允许驱动器重定向”。(把希望的各个不允许的策略都启用)

  • Win网络共享只允许上传与查看,不允许修改与删除

    某客户在设定他的文件服务器时,提出了一个特别的要求,就是有一个网络共享目录中只允许用户上传文件与查阅文件,文件一旦上传就不能修改与删除。

    要达到如此目标,我们需要在共享目录的网络访问权限给用户设定相关权限如下图:

    在按照上图设定完成后即可达成需求。

  • 利用Nginx拓展了原来的ftp系统

    公司原来的FTP(ftp://ftp.dgjs.com)系统运行了好多年了,但是随着浏览器厂商,如谷歌的Chrome、火狐Firefox、还有Microsoft的Edge等在最新的版本中逐渐取消了对Ftp协议的直接支持,这样的结果就是客户在浏览器中不能直接访问我分享的一些资源,为了提升系统的易用性,今天我利用业界最强大的Nginx扩展了我们的ftp系统,可以用浏览器直接去下载我们分享的资源:

    如向日葵客户端是我们经常用到的远程工具,原来的链接:

    ftp://ftp.dgjs.com/SunloginClient/SunloginClient_10.3.0.27372.exe

    采用的是Ftp协议传输,在新版的浏览器中无法直接打开。

    现在也可以直接用http协议方式打开传输,网址如下面的方式:

    http://ftp.dgjs.com:8000/SunloginClient/SunloginClient_10.3.0.27372.exe

    这样就能更方便的去提供ftp服务,极大的提升了系统的易用性。