Dockerfile构建镜像
简介我们在讲docker存储驱动的时候,了解到镜像实际上是分层结构。所以如果我们需要自己生成镜像,其实就是定制每一层的配置、文件等信息。
在前面我们讲镜像的基本操作的时候,学习过如何使用docker commit来提交一个新的镜像。然而事实上,在生产环境中,使用docker commit来生成镜像的方式并不常用。一个原因是这种方式需要手动创建,容易出错,效率低且可重复性弱。再一个使用者不知道镜像是如何创建出来的,里面是否有恶意程序,可能存在安全隐患。
所以更好的方式是我们把每一层的修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、生成镜像。而这个脚本就是Dockerfile。
Dockerfile简单示例下面的示例是利用dockerfile生成一个ssh镜像,当然没什么实际意义:
1234567891011121314151617181920# cat DockerfileFROM ubuntu:16.04MAINTAINER yanwei <yanwei@douyu.tv>## install sshADD sources.list /etc/apt/sour ...
信创UOS部分题目与注解
基本操作:(以httpd服务为例)
设置服务开机自启动
systemctl enable --now httpd
启动/重启/关闭服务
systemctl start/restart/stop httpd
更改主机名
hostnamectl set-hostname server1.example.com
vim编辑器
一、 防火墙放行端口123456http 80 tcp…dhcp 8899 tcp#比赛将会给以上信息,要求放行这些端口/服务
allow:允许通过指定端口的网络流量。
deny:拒绝通过指定端口的网络流量。
reject:拒绝通过指定端口的网络流量,并发送错误响应包给客户端。
使用示例:# 格式:ufw allow/deny 端口/协议
开启或关闭ufw
1ufw enable/disable
开放端口
1ufw allow <port>/<protocol>
例如,允许TCP协议的80端口通过ufw:
1ufw allow 80/tcp
禁用端口
1ufw deny <port>/&l ...
uos
基本知识重点服务运行维护技能服务的搭建、调优、维护掌握apache的各种解决方案12345678910111213141516171819apt install apache2 -y# 安装apache2systemctl start apache2# 启动apache2systemctl enable apache2# 设置开机自启apt install ufw# 安装防火墙ufw enable# 设置开机自启ufw allow 80# 放行端口或 ufw allow ssh[root@UOS /var/www]# mkdir html_1 [root@UOS /var/www]# mkdir html_2 [root@UOS /var/www]# mkdir html_3 # 创建网站目录以及网站首页[root@UOS /var/www]# echo "this is no ...
RHCE第一周作业
1.创建一个用户user2,用root身份给user1修改密码为redhat。提示:创建用户用useradd
2.切换到user1用户,给自己修改一个密码,密码任意。
3.在/root/目录中创建一个以自己的汉语拼音为名字的文件,例如zhangsan.txt。并写入名字、年龄、出生日期、性别,每一项占一行,保存并退出。
4. 查找系统中所有与passwd关键词相关的man 帮助章节。
5.分别写出man帮助的第1,5,8章节是做什么的?1=Executable programs or shell commands
5=File formats and conventions eg /etc/passwd
8=System administration commands (usually only for root)
6.创建一个目录/data提示创建目录的命令为mkdir
7.使用浏览器打开RHEL8的web控制台,并用root登录
8.使用date将系统时间改为2023年10月01日晚上八点五十分18秒,时间使用24小时制
9.将系统时间改正准确后,以2023-02-19 0 ...
实现一次pip安装所有环境
实现一次pip安装所有环境导出本地所安装的所有包pip list
只是在终端窗口列出所安装的所有包
pip freeze >requirements.txt
将所有的包列入requirements.txt中。
安装所有包:
pip install -r requirements.txt
Shell编程
编写shell脚本Shell脚本命令的工作方式有两种:交互式和批处理。
交互式(Interactive):用户每输入一条命令就立即执行。
批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。
一、编写简单的脚本SHELL脚本编写:
声明:#!/bin/bash(用来告诉系统使用哪种Shell解释器来执行该脚本)
注释: #xxxxxx(是对脚本功能和某些命令的介绍信息,使得自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息)
命令:xxxxxx
例1:查看当前所在工作路径并列出当前目录下所有的文件及属性信息:
注:Shell脚本文件的名称可以任意,但为了避免被误以为是普通文件,建议将.sh后缀加上,以表示是一个脚本文件。
执行上述脚本:
执行方式:
1、bash解释器命令直接运行Shell脚本文件;
2、通过输入完整路径的方式来执行。但默认会因为权限不足而提示报错信息,此时只需要为脚本文件增加执行权限即可。
二、接收用户的参数上述脚本程序只能执行一些预先定义好的功能,为了让Shell脚本程序更好地满 ...
Linux进程管理:任务计划服务程序
Linux进程管理:任务计划服务程序计划任务分为一次性计划任务与长期性计划任务。
1、一次性计划任务:只执行一次,一般用于临时的工作需求。设置执行时间:at 时间
查看已设置好但还未执行的任务:at -l
删除任务:atrm 任务序号
at命令的参数及其作用
参数
作用
-f
指定包含命令的任务文件
-q
指定新任务名称
-l
显示待执行任务列表
-d
删除指定待执行任务
-m
任务执行后给用户发邮件
在使用at命令来设置一次性计划任务时,默认采用的是交互式方法。
例:设置20:30分自动重启,查看设置后的任务,然后删除任务。
注:warning提醒表示at命令只是在告诉我们接下来的任务将由sh解释器负责执行。
例:可以把前面学习的管道符(任意门)放到两条命令之间,让at命令接收前面echo命令的输出信息,以达到通过非交互式的方式创建计划一次性任务的目的。
如:echo “reboot” | at 20:30
例:把计划任务写入到Shell脚本中,当用户激活后再开始倒计时执行,可以使用“at now +2 MINUTE”的方式操作,这样代表2分钟(M ...
linux进程的前台/后台切换
linux进程的前台/后台切换1. 把程序放到后台运行在前台运行的程序会一直占用终端命令行,例如你在前台解压的时候必须等着,期间干不了别的事(除非另开一个终端)。但是如果把进程放到后台,可以把终端空出来,你可以执行其它的操作。另一个好处是,放到后台的程序不会被ctrl+C(误触)给终止。
1.1 一开始就把进程放到后台运行直接在命令行末尾加上 &:
<命令行> &
例如 python train.py & 可以让train.py脚本一开始就在后台运行。这样运行后终端不会被占用,你仍然可以可以干别的事
1.2 把已经在前台运行进程放到后台如果命令已经在前台运行了,你想把它放到后台:
先键入Ctrl+z 选项把该进程暂停,放到后台(此时命令行空出来你可以干别的事);
键入jobs -l查看进程的工作号(不是进程号PID),比如说工作号是2
键入 bg %2 即可把该进程放到后台运行(bg=background)。如果直接键入bg则是把所有进程放到后台。如果又想把后台程序放回前台,键入fg %2即可.(fg=foreground)如果直接想杀掉后台进程 ...
Linux用户与权限:权限管理
Linux用户与权限:权限管理概述Linux是多用户的操作系统,允许多个用户同时在系统上登录和工作。 为了确 保系统和用户的安全采取了如下安全管理方案:
通过UID/GID确定每个用户在登录系统后都做了些什么
通过UID/GID来区别不同用户所建立的文件或目录
每个文件或目录都属于一个UID和一个GID
每个进程都使用一个UID和一个或多个GID来运行
通常由被运行进程的用户决定
超级用户具有一切权限,无需特殊说明
普通用户只能不受限制的操作主目录及其子目录下的所有文件,对系统 中其他目录/文件的访问受到限制
分类文件所有者:user
文件所属组 :group
其他用户 :other
权限项
可读
可写
可执行
可读
可写
可执行
可读
可写
可执行
字符表示
r
w
x
r
w
x
r
w
x
数字表示
4
2
1
4
2
1
4
2
1
权限分配
user
user
user
group
group
group
other
other
other
目录上只有执行权限,表示可以进入或穿越他进入更深层次的子目录
目录上只有执行 ...
Linux用户与权限:用户与组管理
Linux用户与权限:用户与组管理用户管理groups 查看当前登录用户的组内成员groups gliethttp 查看gliethttp用户所在的组,以及组内成员whoami 查看当前登录用户名
任何用户被分配一个独特的用户id号(UID),当用户登录时,它被分配一个主目录并 且运行一个程序(通常是一个shell程序)
没有权限许可用户不能读取、写或者执行其它用户的文件
用户帐号通常从UID 500开始(员工辞职后若删除原ID也删除,再重新建立除非指定, 否则顺后面一位数字,例如503
每一个文件都属于一个UID和GID所有(每一个用户都有一个匹配的用户和组)
任何进程运行时都带一个UID和一个或多个GID标识符
通常决定于哪个用户执行这个进程
三种访问类别
运行的进程跟文件有着同样的UID(user)
运行的进程跟文件有着同样的GID(group)
其它进程(other)
1. 添加新用户 useradd/adduser
格式:useradd/adduser [选项] [用户名]
参数:
选项
含义
-u
指定用户的UID值
...