首页 > 其他分享 >docker----day04()

docker----day04()

时间:2023-04-13 16:46:22浏览次数:37  
标签:容器 lqz vim ---- mysql 镜像 docker day04

面试

如何自定制上下文管理器

# 一个对象如果实现了__enter__和___exit__方法,那么这个对象就支持上下文管理协议,
即with语句

# 


# 上节回顾

```python
# 1 docker 启动,停止,查看状态命令
	systemctl start docker
    systemctl stop docker
    systemctl status docker
    docker info  # 查看详情
    systemctl enable docker # 开机自启动
    
    
# 2 配置镜像源,拉取镜像时,速度快
	vim /etc/docker/daemon.json
	# 阿里云的:每个账户会分配
    
    
# 3 镜像操作
	-搜索镜像:在网站上搜索
    -拉取镜像  docker pull 镜像名字:标签
    -查看本地镜像  docker images   或者  docker image ls
    -删除镜像  docker rmi 镜像id号
    -一次性删除所有镜像  docker rim `docker images -p`
    
# 4 容器操作
	-查看正在运行的容器  docker ps
    -查看所有容器  docker ps -a
    
    -创建并运行容器
    docker run -id/it  --name=名字 -p 8080:8080 -p 80:80 -v /home/lqz:/lqz 镜像名字:标签
                    
    -在容器上执行命令
    docker exec 容器id 命令
    docker exec -it 容器id /bin/bash  # exit 退出
    

今日内容

1 容器操作

# 启动容器
	docker start 容器id
# 停止容器
	docker stop 容器id

# 文件拷贝
	# 容器的文件copy到宿主机上(不是在容器内执行)
    docker cp 容器名称:容器目录 需要拷贝的文件或目录
    docker cp  20fd8:/home/lqz.txt /home/lqz.txt
    # 宿主机的文件copy到容器中
    docker cp 需要拷贝的文件或目录 容器名称:容器目录
    docker cp ./lqz.txt 20fd894a3f20:/home/lqz.txt

# 查看容器IP地址    
	docker inspect 容器名称  # 查看容器的详细描述,很多
    docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
    
    
    # 在多个容器之间是可以ping通的
    # centos:172.17.0.3
    # mysql:172.17.0.2

    
# 删除容器(删除已停止的容器)
	docker rm 容器id  
    docker rm `docker ps -a -q`
    
    
    
 # 无状态的服务
	-myslq reids
    -uwsgi+django

2 应用部署

2.1 mysql 部署

docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

# 做目录映射:data文件,配置文件
# 创建文件夹
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/
vim /home/mysql/my.cnf
[client]
default-character-set=utf8
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000

docker run  -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7      
        
     
    
# 创建库,创建表,插入数据

# 关闭容器,删除容器,myslq的容器没了,但是数据在宿主机上放着

# 再运行起一个容器,做好目录映射,数据都回来了

2.2 redis

# 拉取redis镜像
docker pull redis
mkdir /root/data
vim /root/redis.conf

bind 0.0.0.0
daemonize NO
protected-mode no
requirepass 123456



# 运行
docker run -id  -p 6379:6379 --name redis -v /root/redis.conf:/etc/redis/redis.conf -v /root/data:/data redis  redis-server /etc/redis/redis.conf
            
     
    
# 远程链接redis操作

2.3 nginx

# 拉取nginx镜像
docker pull nginx

# run起容器
# docker run -id --name nginx -p 80:80 nginx
    
# /usr/share/nginx/html
docker run -id --name nginx -p 80:80 -v /root/html:/usr/share/nginx/html nginx
# 以后只需要修改宿主机的/root/html 路径,看到页面就是修改后的

3 迁移与备份

# 容器保存为镜像
	-运行一个centos容器
    docker run -id --name centos_vim centos:7
    -在容器中装vim
    docker exec -it a6e240 /bin/bash
	yum install vim -y
    
    -把容器做成镜像(centos+vim)
    docker commit centos_vim centos_vim_image

    -把centos_vim 容器删除
    docker rm centos_vim
    -基于新构建的镜像,运行成容器
    docker run -id --name centos_vim centos_vim_image:latest
    -进入到容器中,查看,软件都在
    docker exec -it id号 /bin/bash

# 镜像备份和恢复
	docker save -o centos_vim_image.tar centos_vim_image
    -删除容器,删除镜像
    -把备份的镜像恢复
    docker load -i centos_vim_image.tar

4 Dockerfile

# 镜像从哪里来的?
	1 远程仓库拉取的 docker pull
    2 用容器做成的镜像 docker commit 
    3 把备份的恢复 docker load
    4 使用Dockerfile来构建
# 什么是Dockerfile
	Dockerfile是由一系列命令和参数构成的脚本文件,这些命令应用于基础镜像并最终创建一个新的镜像
    
# Dockerfile的命令
	FROM 基础镜像 	       #基于哪个基础镜像来构建
    MAINTAINER lqz 	     # 声明镜像的创建者
    ENV key value 	     # 设置环境变量 (可以写多条)
    RUN command 	     #是Dockerfile的核心部分(可以写多条)
    ADD source_dir/file dest_dir/file 	#将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
    COPY source_dir/file dest_dir/file 	# 和ADD相似,但是如果有压缩文件并不能解压
    WORKDIR lqz 	# 设置工作目录,运行起这个容器,来到的路径就是这个路径
    
    
    
# 构建一个带vim的centos镜像
vim Dockerfile

FROM centos:7
MAINTAINER lqz
ENV name lqz
RUN yum install vim -y
RUN mkdir /lqz
RUN touch /lqz/ss.py
RUN echo 'print(1)' >/lqz/ss.py
COPY /root/redis.conf /lqz/redis.conf
WORKDIR /lqz


# 基于dockerfile构建镜像
docker build -t='centos_lqz_vim' .

# 基于这个镜像运行容器
 docker run -id --name xx centos_lqz_vim
# 进入到容器
docker exec -it xx /bin/bash
# 验证vim,和文件夹,文件是否存在

作业

使用Dockerfile构建一个运行django程序的镜像

django 的helloworld  --》压缩包

基于Python3.8 构建一个能够运行你这个程序的镜像
FROM python:3.8
MAINTAINER lqz
RUN pip install django==3.2.2
ADD 压缩包
WORKDIR /lqz
 
docker run -id -p 8080:8080 --name xx djago python manage.py runserver 0.0.0.0:8080
        
        
        
# 面试题
1 什么是迭代器,生成器,装饰器
2 django的信号用过吗?如何用,干过什么
3 Dockerfile用过吗?常永命令有哪些

标签:容器,lqz,vim,----,mysql,镜像,docker,day04
From: https://www.cnblogs.com/tengyifan888/p/17315338.html

相关文章

  • Github创建组织(organization)
    前言创建Github组织(Organization)可以让你和你的团队共享代码,更好地管理和协作开发项目。Github组织(Organization)是一个非常有用的工具,可以让开发者协同工作并共享他们的代码。首先,登录你的Github账户。Github上创建组织的详细步骤1、点击右上角的加号(+)按钮,然后从下拉菜单中选......
  • 跟着查老四学Python Day 11:类的高级特性
    学习类的特殊方法例行寒暄之后,查老四开始了几天的课程查老师:1.学习类的特殊方法,例如__init__、__str__、__repr__等Python中的类可以具有一些特殊方法,这些方法具有双下划线前缀和后缀,例如__init__、__str__和__repr__等。它们在特定情况下被自动调用。__init__:当创建类的实例时,会......
  • 面向对象编程 -- 创建对象1
    面向对象编程 --创建对象1//虽然使用Object构造函数或对象字面量可以方便地创建对象,但这些方式也有明显不足:创建具有同样接口的多个对象需要编写很多代码。一、概述//纵观ECMAScript规范的历次发布,每个版本的特性似乎都出人意料。//ECMAScript6开始正式支持类和继......
  • es 同步索引报错:ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/ind
    es同步索引报错:ElasticSearchClusterBlockException[blockedby:[FORBIDDEN/12/indexread-only/allowdelete(api)]原因:网上有的解决方式是方法一,我试过,没有生效使用的是方法二方法一curl-XPUT-H"Content-Type:application/json"https://localhost:9200/_all/_set......
  • Java常用实体类介绍:POJO、Domain、DO、DTO、VO
    POJOPOJO是PlainOldJavaObject的简称,它指的是一个没有限制或要求下的纯平对象。POJO用于表示没有任何框架或技术限制的纯数据对象。在Java开发中,POJO通常用于简化复杂对象和降低对象的耦合度,是面向对象编程中"高内聚、低耦合"设计思想的体现。示例代码:@Datapublic......
  • DispatcherServlet 是一个 Servlet 也是一个bean
    ServletDispatcherServlet实现了javax.servlet.Servlet接口,负责处理来自客户端浏览器的HTTP请求,并将请求分发给相应的Controller进行处理。DispatcherServlet通常是Web应用程序中唯一一个Servlet,并且是SpringMVC框架中最核心的组件之一。SpringBoot启动时会初始化Tomcat容器......
  • 跟着查老四学Python Day 11:常用 Python 库
    Python库概览例行寒暄之后,查老四就开始授课了老猫:请大致介绍一下Python库查老四:Python库是一组预先编写好的模块或函数,它们可以实现特定功能或解决特定问题。Python有许多库,它们覆盖了各种不同的领域和应用。以下是一些常用Python库的简要介绍:NumPy:一个用于处理数组和矩阵运算的......
  • 服务器通用背板管理(UBM)实现
    本文分享自天翼云开发者社区《服务器通用背板管理(UBM)实现》,作者:乘风  一UBM概述通过SGPIO进行SAS和SATA背板管理的SCSI机箱服务(SES)标准于2003年首次推出。该规范提供主机控制LED,并允许主机检测槽位和已安装驱动器的存在,以及槽位编号方案。该规范提供了驱......
  • 详解GaussDB(DWS)的query_band负载识别与应用
    摘要:query_band是一个会话级别(session)的GUC参数,本身是字符串类型,支持任意形式字符组合。本文分享自华为云社区《GaussDB(DWS)的query_band负载识别与应用》,作者:门前一棵葡萄树。query_band概述GaussDB(DWS)实现了基于query_band的负载识别和优先级调度,一方面提供了更为灵活......
  • 链路聚合
    ● 链路聚合● 活动接口:可以转发数据的接口● 活动链路:活动接口组成的链路● 链路聚合模式● 手工负载分担模式下所有活动接口都参与数据的转发,分担负载流量● LACP模式支持链路备份● 数据流控制● Eth-Trunk链路两段相连的物理接口的数量、速率、双工方式、流控方式必须......