• docker使用及Dockerfile编写


    docker 基础使用

    Linux安装docker

    # Linux安装docker服务
    sudo apt install docker.io
    
    # 把普通用户加入到docker组中(解决docker ps权限问题,$USER通常为用户名)
    sudo gpasswd -a $USER docker
    newgrp docker
    

    docker 环境路径配置

    # 修改系统环境变量
    export PATH="/new/path:$PATH"
    
    # 单次生效
    source ~/.bashrc
    
    # 永久生效(注意多个path用 : 分隔)
    export PATH="/new/path:$PATH"
    

    docker 启动和基础使用

    1、下载镜像
    docker pull ubuntu:18.04
    
    2、启动 docker
    docker run -d -P -it --privileged ubuntu:18.04
    # 使用 -d 表示后台运行(不使用-d,退出后docker就stop掉了),需要使用 docker exec -it 重新进入docker
    docker exec -it test /bin/bash
    
    # -v 表示作映射(共享),本机或者docker中修改对于双方都可见(通常用于自动化测试环境调试)
    docker run -d -P -it --privileged -v /dev:/dev -v /home/demo/autowork:/home/test --name test
    
    3、docker 相关操作
    # 向 Docker 容器拷贝文件:
    docker cp <本地文件路径> <容器名或 ID>:<目标路径>
    

    docker常用命令

    # 安装
    apt install docker.io
    # service 命令的用法
    sudo service docker start
     
    # systemctl 命令的用法
    sudo systemctl start docker
    
    # 查看是否配置成功
    docker info
    
    # 列出本机正在运行的容器
    docker ps
    
    # 列出本机的镜像
    docker images
    
    # 列出本机所有容器,包括终止运行的容器
    docker container ls --all
    
    # 重新运行exit的容器
    docker start -ia 容器id #如果执行docker run 会提示容器已经存在错误
    
    docker exec -it dd903b670192 /bin/bash
    终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。
    docker container rm [containerID]
    
    # 停止并删除docker
    docker stop id
    docker rm id
    docker rmi id
    
    
    卸载docker
    # 查询相关软件包
    dpkg -l | grep docker
    # 删除这个包
    sudo apt remove --purge docker.io
    

    本地更新docker镜像并上传服务器

    # 修改镜像以后可以cmmit的方式上传,本地提交
    docker commit -m 'update xxx' containerID  ubuntu:18.04
    # 登录harbor
    docker login -u user -p passwd xxx
    # 上传镜像
    docker push xxx
    

    常见问题解决方案

    # 解决docker ps等waring问题
    sudo su
    chmod 777 /home/jenkins/.docker/
    
    # docker环境缺少中文集:导致python run.py运行失败
    安装中文包:https://zhuanlan.zhihu.com/p/165961076
    
    

    docker中 使用pip.conf进行重定向
    文件路径:~/.pip/pip.conf

    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/
    
    [install]
    trusted-host = mirrors.aliyun.com
    

    参考文档

    Dockerfile编写 制作镜像

    dockerfile实际上就是指定需要往镜像中安装的工具或者库,需要什么就apt-get、pip、或者其他方式进行安装即可

    基础镜像

    制作镜像,在有dockerfie文件的文件夹下执行:docker build . -t xxx

    FROM ubuntu:20.04
    
    WORKDIR /root
    
    ## apt sources
    RUN apt-get update
    
    ## using mirrors.aliyun
    # RUN sed -i -e 's/archive.ubuntu/mirrors.aliyun/' /etc/apt/sources.list \
    #     && cat /etc/apt/sources.list \
    #     && apt-get update
    
    ## skip timer
    ARG DEBIAN_FRONTEND=noninteractive
    ENV TZ=Asia/Shanghai
    
    ## apt-get basic depends
    RUN apt-get -y install    wget vim curl cmake git libssl-dev openssl bzip2 libbz2-dev \
        && apt-get -y install socat ssh gawk net-tools libncursesw5 jq sshpass iputils-ping telnet zip unzip lcov \
        && apt-get -y install tree zabbix-agent locate git-core libncurses5 libncurses5-dev \
        && apt-get -y install build-essential \
        && apt-get -y install python3 python3-pip \
        && apt-get -y install openjdk-8-jdk
    
    RUN set -x \
        && apt-get -y update \
        && apt-get -y install \
        git \
        wget \
        vim \
        && apt-get clean && rm -rf /var/lib/apt/lists \
        && update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 \
        && : # last line
    
    # copy files and export to $PATH
    COPY XXX.tar.gz /root
    RUN tar -xzf /root/XXX.tar.gz \
        && rm /root/XXX.tar.gz
    ENV PATH="/root/install/bin:${PATH}"
    
    # install other depends use mirrors
    RUN touch /etc/pip.conf \
        && echo "[global]" > /etc/pip.conf \
        && echo "index-url = https://mirrors.aliyun.com/pypi/simple/" >> /etc/pip.conf \
        && echo "[install]" >> /etc/pip.conf \
        && echo "trusted-host = mirrors.aliyun.com" >> /etc/pip.conf
    RUN pip3 install --upgrade pip
    
    # install pip libs
    COPY requirements.txt requirements.txt
    RUN pip3 install -r requirements.txt
    
    # set up ssh keys and config
    COPY id_rsa id_rsa.pub config authorized_keys /root/.ssh/
    RUN chmod 700 /root/.ssh/id_rsa.pub /root/.ssh/id_rsa /root/.ssh/authorized_keys
    
    ### maybe need copy .gitconfig and proxy.conf 
    
    
    # ln -sf
    RUN ["ln", "-sf", "/usr/bin/python3", "/usr/bin/python"]
    
    # Install repo tool
    RUN set -x \
        && curl https://storage.googleapis.com/git-repo-downloads/repo > /bin/repo \
        && chmod a+rx /bin/repo
    

    .gitconfig配置

    [alias]
            gst = git status
            gbr = git branch
    [user]
            email = xxx
            name = xxx
    
    [color]
            ui = auto
            status = auto
    

    参考:https://blog.csdn.net/tsq292978891/article/details/89314127

    参考文档

  • 相关阅读:
    什么是地理信息系统(GIS)?
    UNITY AR VPS空间-视觉-特征点定位 SDK
    Linux驱动开发 --- 架构方面的一些感悟
    扬帆起航:许战海方法论日文版正式发布
    springboot 配置文件加载顺序
    Flume的简介
    【C语言】万字详讲操作符
    设计模式_责任链
    Git 学习笔记 | Git 基本操作命令
    c 语言基础:L1-045 宇宙无敌大招呼
  • 原文地址:https://blog.csdn.net/qq_38537501/article/details/139842249