首页 > 其他分享 >04 Docker内容补充

04 Docker内容补充

时间:2023-05-02 10:33:14浏览次数:31  
标签:容器 name 04 补充 django -- 镜像 Docker docker

第四章 Docker内容补充

目录

0 总结

1 介绍docker
	-docker ce和docker ee
    -版本:17年  19.03.
    -架构:c/s 符合restful规范
    -详细架构:架构图
    -kvm,vmware,openstack,docker,k8s
2 docker 安装
	-windows(不推荐),mac安装(软件安装)
    -乌班图
    -centos:必须7以上,内核版本必须大于3.1,新软件
    	-照着笔记一步一步来
        -启动:systemctl start/restart/stop docker
        -docker -v 
        
3 镜像和容器
	-类和对象
4 镜像操作
	-docker pull 名字:v1
    -docker rmi 镜像id号   docker image rm 镜像id号
    -docker images        docker image ls
    
5 容器操作
	-创建:create
    -运行:start
    -创建并运行:run 
    	-i:运行容器
        -d:容器后台运行【守护进程】
        -t:启动并进入容器
        -v:宿主机路径:容器路径  # 不管是宿主机还是容器修改文件,相互影响
        -p:端口映射 宿主机端口:容器端口  #以后访问宿主机端口就相当于访问容器
        --name:指定容器名字  # 如果不指定也会随机一个
        -e:指定环境变量  # 往容器的环境变量中加了这个东西
        docker run -di --name=mysql_test -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql  # 这里拉取了什么容器,就需要使用该容器对应的客户端去进行连接【比如:使用navicate连接docker下的mysql,ubuntu就是使用/bin/bash连接】
    -文件拷贝 # 补充内容
    	-docker cp 宿主机文件或者路径 容器id:容器路径
        -docker cp 容器id:容器路径 宿主机文件或者路径
    -删除容器
    	docker rm 容器id
    -停止容器
    	docker stop 容器id
        # 容器之所有一直在运行的原因是,有一个前台进程在夯住【启动ubuntu容器,就是执行的/bin/bash】
    -查看容器详细信息
    	docker inspect 容器id
        docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
        # 多个容器互通,可以通过ip,端口映射,机名
6 应用部署 # 下述部署都只是示例,不推荐,因为数据都在容器内部,实际使用,需要进行数据卷挂载
	-部署nginx
    docker run -di --name=mynginx -p 80:80 nginx
    -部署mysql
    docker run -di --name=mysql_test -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
    -部署redis
    docker run -di --name=myredis -p 6379:6379 redis

1 迁移与备份

1.0 总结

# 删除所有容器()
docker rm `docker ps -a -q`
# 删除所有镜像
docker rmi `docker images -q`

# 通过自己构建的image启动容器【后面需要添加自己的django执行命令,也可以写在dockerfile中】
docker run -id --name=mydjango -p 8088:8088  mydjango python /project/django_test/manage.py runserver 0.0.0.0:8088
               
# 查看容器运行日志
docker logs 容器id


# 操作步骤
	1 启动一个python容器
    	docker run -di --name=yangyi python:3.6
    2 进入装软件
    	docker exec -it yangyi /bin/bash
        mkdir /project
        pip install django==1.11.1 
        退出
    3 把项目拷贝到容器内部
    	docker cp /opt/yangyi/django_test lqz:/project
            
    4 把容器做成镜像
    	docker commit yangyi mydjango
    5 基于自己做的镜像运行容器
    docker run -id --name=mydjango -p 8088:8088  mydjango python /project/django_test/manage.py runserver 0.0.0.0:8088

注意:docker exec -it mydjango mkdir helloworld 也就是说,exec中可以执行简单命令。

1.1 容器保存为镜像

docker commit 容器名字 镜像名字
docker commit django_demo mydjango
pip install django==1.11.11 -i https://pypi.douban.com/simple/

1.2 把镜像打包成压缩包

docker save -o mydjango.tar mydjango

1.3 把压缩包恢复为镜像

docker load -i mydjango.tar

2 Dockerfile【重要】

2.1 Dockerflie是什么?

就是一个文件,存放一堆指令,通过该文件可以生成镜像。

2.2 Dockerfile指令:

命令 作用
FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 声明镜像的创建者
ENV key value 设置环境变量 (可以写多条)
RUN command 是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir 设置工作目录【就是执行操作的目录,进去容器在哪个路径下】

VOLUMEEXPOSE这些东西可以不写,在启动容器的时候主动做映射就行。

2.3 写一个Dockerfile

文件名必须叫Dockerfile

FROM python:3.6  
MAINTAINER yangyi
EXPOSE 8080  # 可以在创建容器的时候直接挂载即可
ADD ./requirement.txt /home/  # 将该目录下的requirement.txt文件拷贝到/home/中【一般dockerfile和requirement.txt混合使用】
RUN pip install -r /home/requirement.txt -i https://pypi.douban.com/simple/ 
RUN pip install uwsgi -i https://pypi.douban.com/simple/
VOLUME ["/home"]  # 没啥用,直接创建容器的时候直接挂载即可
WORKDIR /home/django_test
CMD ["python", "/home/django_test/manage.py", "runserver", "0.0.0.0:8080"]  # 运行这个容器的时候,会执行什么命令 【可以把django的启动命令写到CMD中】

通过Dockerfile构建出镜像

docker build -t="django_1.11.11" .  # 以当前路径下的`Dockerfile`构建出名为django_1.11.11镜像

依赖镜像启动容器:

docker run -di --name=mydjango2 -v /opt/yangyi/:/home -p 8080:8080 django_1.11.11  // 将宿主机中的yangyi/文件夹挂载到/home/文件夹下

之后,在外部访问即可。

当然,可以启动多个docker容器(宿主机的不同端口映射到容器的同一端口上)。

# 多启动几个docker容器
docker run -di --name=mydjango3 -v /opt/lqz/django_test2/:/home/django_test/ -p 8081:8080 django_1.11.11
docker run -di --name=mydjango3 -v /opt/lqz/django_test2/:/home/django_test/ -p 8082:8080 django_1.11.11

3 docker-compose

示例Dockerfile:

ARG PYTORCH="1.6.0"
ARG CUDA="10.1"
ARG CUDNN="7"

FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel

ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0+PTX"
ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
ENV CMAKE_PREFIX_PATH="$(dirname $(which conda))/../"

RUN apt-get update && apt-get install -y git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 ffmpeg \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Install mmcv-full
RUN pip install mmcv-full==latest -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html

# Install MMAction2
RUN conda clean --all
RUN git clone https://github.com/open-mmlab/mmaction2.git /mmaction2
WORKDIR /mmaction2
RUN mkdir -p /mmaction2/data
ENV FORCE_CUDA="1"
RUN pip install cython --no-cache-dir
RUN pip install --no-cache-dir -e .

标签:容器,name,04,补充,django,--,镜像,Docker,docker
From: https://www.cnblogs.com/yangyi215/p/17367399.html

相关文章

  • COM3504/COM6504 智能网络
    COM3504COM3504/COM6504TheIntelligentWebAssignment2022-2023Deadline:Fri,19May20233pmHandin:zipfileviaBlackboard(seeSection8-Submissions).1.IntroductionThisassignmentwilltestyourabilitytocreateawebapplicationusingthemet......
  • windows11 下使用 阿里云 modelscope docker 环境 运行参考
    昨天看视频我们做了个能对话的AI派蒙,免费给大家玩!发现阿里有一个语音转文字的模型(paraformer),之前处理这种需求一直都是直接调用服务商提供好的API接口突然想尝试一下本地搭建,虽然和直接调用API没啥区别(都不知道实现细节),但是这是本地化运行,可以在内网环境运行.因为平......
  • 02 Docker核心技术
    第二章:Docker核心技术目录第二章:Docker核心技术一、Docker镜像管理1镜像简介2搜索、查看、获取3重命名、删除4镜像导入、导出5镜像历史、详细信息、创建6小结二、Docker容器管理1容器简介2容器查看、创建、启动3暂停、取消暂停、重启4容器关闭、终止、删除5进入、退出......
  • 01 Docker基础
    第一章Docker基础目录第一章Docker基础一、Docker简介1Docker是什么?2为什么使用Docker?3Docker的架构与结构4官方资料5Docker特点5.1优点5.2缺点二、Docker快速入门1Docker历程2官方要求3Docker安装4Docker加速器5Docker其它简介5.1Docker的基本命令格式5.2删除Do......
  • ubuntu20安装docker、redis、mysql及部署net6应用
    一、更新系统软件包索引sudoaptupdate二、安装dockersudoaptinstalldocker.io三、在docker中安装Mysql拉取mysql镜像dockerpullmysql:latest查看镜像dockerpullmysql:latest运行容器dockerrun-itd-p3306:3306-eMYSQL_RO......
  • Dockerfile基础命令及简单应用
    Dockerfile从dockercommit的学习中,我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解......
  • Ubuntu18.04 VMwareTools安装方法
    一、VMwareTools的一些实用性安装后用户可以从物理主机直接往虚拟机里面拖文件。安装后鼠标进入虚拟机后可以直接出来,不安装的话要按CTRL+ALT才可以释放鼠标。安装后可以解决Ubuntu主窗口分辨率不适应问题,用户可以随意改变虚拟机窗口大小,vmtools会自动帮你改成适当的分辨率。二、......
  • 1.Docker的介绍与安装
    1.Docker的介绍与安装 1.1什么是Docker​Docker是基于Go语言实现的云开源项目。  Docker的主要目标是Build,ShipandRunAnyApp,Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够......
  • 1.Docker的介绍与安装
    1.Docker的介绍与安装 1.1什么是Docker​Docker是基于Go语言实现的云开源项目。  Docker的主要目标是Build,ShipandRunAnyApp,Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够......
  • 8.函数的运用与补充
    函数的默认值函数的重载递归函数系统函数的调用函数的默认值函数的默认值是从左至右赋值的#include<iostream>usingnamespacestd;voidadd(intx,inty=4){//y的默认值为4cout<<x+y<<endl;}intmain(){add(3);}输出结果为7函......