• 1.docker的基本使用


    1.简介

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

     

    在之前的项目部署中,我们需要在linux服务器上安装python,nginx,uwsgi,redis, ,mysql等等,这是一个非常耗时的过程,可能要花费一天的时间,如果我们在以后迁移到其他服务器怎么办,难道要重新部署一次吗?!!!

    为此我们可以使用docker技术,将所有的部署放在docker中,然后将docker打包,如果以后需要迁移,直接将镜像发送到服务器,一键启动

    1.1 Docker的应用场景

    • Web 应用的自动化打包和发布。

    • 自动化测试和持续集成、发布。

    1.2 相关链接

    Docker 官网:https://www.docker.com

    Github Docker 源码:https://github.com/docker/docker-ce

     

    2.docker的生命周期概念

    • 镜像:一个系统的只读版本,例如一个微型的centos或者ubuntu系统

    • 容器:容器进程,应用程序以后封装在容器中运行,相互隔离

    • 仓库:存储镜像的一个仓库地址,便于和他人共享镜像文件

    我们基于镜像运行容器,一个镜像可以运行多个容器实例,这样的话多个容器内的环境也是一模一样的

    3.安装docker

    3.1 下载

    使用官方安装脚本自动安装

    # 下载curl
    sudo apt install curl

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

      

    3.2 确保docker服务已打开

    复制代码
    # 查看docker服务状态 
    sudo service docker status
    # 重启docker服务
    sudo service docker restart
    # 关闭docker
    sudo service docker stop
    # 开启docker服务
    sudo service docker start
    复制代码

     

    3.3 测试docker是否成功安装

    sudo docker run hello-world

    显示如下下界面代表安装成功

     

    4 卸载docker

    删除安装包:

    sudo apt-get purge docker-ce

     

    删除镜像、容器、配置文件等内容:

    sudo rm -rf /var/lib/docker

     

    5 操作docker

    docker服务操作

    sudo service docker start   # 开启docker服务
    sudo service docker stop    # 关闭docker服务
    sudo service docker restart # 重启docker服务
    sudo service docker status  # 查看docker服务状态

    5.1 查看所有镜像

    sudo docker images
    包括:镜像名称 镜像ID 镜像创建时间 镜像大小

    5.2 查看容器

    docker ps   # 查看存活的容器
    docker ps -a  # 查看所有容器,包括已退出的容器

    5.3 运行docker

    在运行一个镜像的时候,如果容器中没有存活的进程,容器就会直接挂掉

    复制代码
    # 简单运行一下,通常会执行一下容器就会挂掉
    docker run 镜像名称
    # 交互式的运行一个的docker容器,-i:交互式命令, -t:开启一个终端
    docker run -it 镜像名称 /bin/bash
    
    # 后台运行一个docker容器,并指定运行shell代码 -d:让容器后台运行, -c:运行的shell命令
    docker run -d 镜像名称 /bin/sh -c "while true;do echo 辛苦了,学习linux; sleep 1;done"
    
    # 运行容器并指定名称
    docker run --name xxx -it 镜像名称 /bin/bash
    
    # 运行容器并指定端口映射
    docker run --name xxx -it 镜像名称 -p 6000:5000

    # 运行容器并指定端口映射,文件夹映射
    docker run --name xxx -it 镜像名称 -p 6000:5000 -v 宿主机目录:容器目录 -e 环境变量key:环境变量velue
    # 运行容器并制定端口映射,文件夹映射和环境PATH映射
    docker run --name xxx -it 镜像名称 -p 6000:5000 -v 宿主机目录:容器目录 -e

    # 运行容器指定容器的网络模式
    docker run -d --name xxx --net=host
    # 进入一个存活的容器 docker exec -it 容器id /bin/bash 

    # 退出容器
    exit
    复制代码

    sudo docker run -d --name kunmzhao --net=host -it -e PYTHONPATH=/home/auto/code/tng-synlite:/home/auto/code/tngscripts -v /home/mars/kunmzhao:/home/auto/code/3pcc_scripts containers.cisco.com/synergy_lite/codestone_runner:3.7.45

     docker run创建Docker容器时,可以用 --net 选项指定容器的网络模式 :

    host模式:使用 --net=host 指定。
    none模式:使用 --net=none 指定。
    bridge模式:使用 --net=bridge 指定,默认设置。
    container模式:使用 --net=container:NAME_or_ID 指定

     

     

     

    对于已经创建好的容器操作

    sudo docker start ID:启动一个已经停止的容器
    sudo docker restaet ID:重启启动一个容器
    sudo docker stop ID:停止一个正在运行的容器
    sudo docker kill ID :强制杀死一个正在运行的容器

     

    5.4 docker镜像的获取

    方式一:dockerhub获取,先搜索后下载
      docker search 镜像名称docker pull  镜像名称

    ​方式二:自己制作docker commit 容器id 新镜像名称

    5.5 删除镜像

    # 删除镜像要确保没有使用该镜像的容器,否则失败
    docker rmi   镜像id
    
    # 批量删除镜像
    docker rmi `docker iamges -aq`

    5.6 删除容器

    # 确保容器是未运行的
    docker rm   容器id
    
    # 批量删除容器
    docker rm  `docker ps -aq`

    5.7 查看指定容器的运行日志

    docker logs  容器id
    docker logs -f  容器id   #实时刷新容器内的日志,例如检测nginx等日志信息

    5.8 镜像的制作,导出及导入

    • 镜像制作
      docker commit  容器ID  镜像名称

       

       

    • 镜像导出
      docker save  镜像id   >   镜像的压缩文件

       

       

    • 镜像导入
      初次导入镜像没有tag,添加一个即可
      docker  load   <   镜像的压缩文件
      docker tag  镜像id  镜像新名称

       

        

     

  • 相关阅读:
    IDEA插件开发(20)--Editor Components
    临时关闭Pcie ACS 重定向服务
    Java JVM——1.JVM与Java体系结构
    使用 vllm 本地部署 Llama3-8b-Instruct
    人工智能三要素之算法Transformer
    LeetCode-380. Insert Delete GetRandom O(1) [C++][Java]
    【Mapbox基础功能】01、前置学习资料(文档地址、accesstoken生成)
    【模型训练】YOLOv7车辆三类别检测
    web基础和http协议
    sort方法实现复杂排序
  • 原文地址:https://www.cnblogs.com/victor1234/p/16880251.html