@雨谷
# 2021年5月12日14:14:48
## 内容回顾:
mkdir dirName 创建文件夹
touch fileName 创建文件
cat fileName 查看文件
mv filename path 将 filename 移到指定path下
cp filename path 将 filename 复制一份到path下
rm filename 删除指定的filename文件
rm -r filename 可删除文件夹
rmdir 删除指定的dir
打包 : .tar
压缩 : .tar.gz
$ tar -cvf fileName .tar.gz fileName1 fileName2 ...
$ tar -xvf fileName .tar.gz
$ tar -xvf test.tar.gz -C ../temp/
zip/unzip
$ sudo apt install zip unzip
查找文件 find
$ find 要查询的起始路径 -name 文件名称
$ find 要查询的起始路径 -size 文件大小 -type f
搜素文件中内容 grep
$ grep -r -n KeyWord 起始路径
vi / vim
1.普通模式
yy 复制
yny
p 粘贴
dd 删除
dnd
u 恢复至上一步
{
}
[[
]]
进入编辑模式
a
i
o
r
进入末行/指令模式
:
/
?
2.编辑模式
3.末行模式/指令模式
替换
:set number
:w 保存
:q 退出
:wq 保存退出
! 加感叹号表示强制 ,如强制退出
:keyword 多个关键字时 按 n 跳转光标至next关键字
:s/keyword/content 搜素关键词 替换为指定内容
:s/keyword/content/g
:1,$s/keyword/content/g
ESC
Linux系统目录:
/ 操作系统的根目录
/bin 存放二进制文件
/sbin 存放系统二进制文件
/dev 存放逻辑设备名的主目录
/etc 存放系统所有程序的所需的配置文件
/proc 进程信息 包含系统进程的相关信息
/var 变量文件,该目录用于存放内容可能增长的文件,如系统日志文件(/var/log)
/tmp 临时文件,当系统重新启动时,该目录下的所有文件都会被删除
/usr 用户程序,包含二进制文件,库文件,文档和二级程序的源代码
/home 存放所有用户的个人档案
/boot 存放引导加载程序相关的文件
/lib 存放支持位于/bin和/sbin下的二进制文件的库文件
/opt 存放可选的附加应用程序
/mnt 挂载目录:临时安装目录
- 文件
d 目录
b 块设备
c 字符设备文件
l 链接
链接的类型:
软链接 : 原内容的快捷方式 ln -s src desc
源文件被删除后,软链接失效
硬链接 : 原内容的一份复制品 ln src desc
源文件删除后
knowledge review:
#2021年5月13日08:35:44
/bin 存放二进制文件
/etc 存放系统所有程序的所需的配置文件
/etc/init
/ect/rc[0~6].d
/mnt 挂载目录:临时安装目录
/usr
/var
/tmp
touch 文件名 创建文件
mkdir 文件夹名 创建目录
链接:
ln -s src desc 创建软连接 快捷方式, 源被删除,软连接失效,可以创建目录的软连接
ln src desc 创建硬链接 复制源文件,源被删除,对硬链接无影响,不能对目录创建硬链接
ll /etc/rc0.d 查看部分软链接 rc0.d ~ rc6.d 都存放链接
用户账户和组:
/etc/passwd 存放用户信息
yugu:x:1000:1000:MyUbuntuServer,,,:/home/yugu:/bin/bash
用户名(1~8位字符):占位符(x):UID(user id):GID(group id)
UID :
系统管理员账号 : 0~120
普通权限账号 :1001~60000
/etc/shadow 存放密码信息 shadow --> 影子
yugu:$1$4S0d.u/5$ao3/sdx9h4qGRtq2YOkFJ0:18754:0:99999:7:::
/etc/group 存放用户组信息
yugu:x:1000:
lpadmin:x:114:yugu
-g 主组
次组:最多可以拥有15个用户
tony
uid = 2000
gid = 2000
管理用户和组
1.管理用户
添加用户
$ useradd [-u uid] [-G gid...] [-c "Comment"] -d PATH/HOMEDIR -m UserName
注意点:创建用户时记得指定home目录,方便后面的修改操作,否则很麻烦
sudo useradd -u 1001 -c "my second username" -d /home/dark -m -s /bin/bash dark
$ passwd yugu2
修改用户
$ usermod
sudo usermod -m -l newName oldName
删除用户
$ userdel
sudo userdel -r UserName
2.管理组
添加组
$ groupadd
groupadd -g Gid GroupName
修改组
$ groupmod
groupmod
删除组
$ groupdel
修改当前登录用户的密码 passwd
oldPassword
newPassword
当前用户修改密码时不能太简单,1~6无法在当前用户修改了,
更改到另一个账户
sudo passwd root
passwd yugu
shutdown -h now
shutdown -r now
reboot
poweroff
#2021年5月14日08:42:40
#内容回顾
/etc/passwd
/etc/shadow
/etc/group
#用户管理
useradd
$useradd [-u uid] [-g gid] -d HomeDir -s /bin/bash -m [-c Comment]
usermod
$usermod -l NewUserName OldUsername
userdel
$userdel -r UserName
#组管理
groupadd
$groupadd [-g gid] [-o] GroupName
groupmod
$groupmod [-g NewGid] [-o] [-n NewGroupName] GroupName
groupdel
$groupdel [-R] GroupName
#任务调度
#启动级别
lrwxrwxrwx 1 root root 23 May 7 06:33 S01open-vm-tools -> ../init.d/open-vm-
lrwxrwxrwx 1 root root 20 May 7 14:30 K01irqbalance -> ../init.d/irqbalance*
$runlevel
3/5
3:直接进入命令行提示符
5:Xll(GUI)
6:关机
init 0
S: start
K: kill
服务状态:
启动 start
暂停 pause
停止 stop
状态 status
重启 restart
CMOS
任务调度
命令格式:
* * * * * command (分 时 日 月 周 命令)
编辑任务调度 : $crontab
usage: crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
关闭进程
$ps -l
$ps -ef
$ps -aux
$kill Pid
$top -d 10
Shell
Shell 提供了用户和Linux(内核)交互的一个接口
用户程序 --> Shell --> 内核 --> 硬件
#内容回顾
/etc/init.d
/etc/rc[0~6].d 均为软链接文件,链接到 /etc/rc.d/rcx.d 目录,文件格式相同,都以S或K开头。。。
S: start
K: kill
#启动级别: runlevel
0 关机
1 单用户
2 多用户,不支持NFS
3 多用户,支持NFS
4 未使用
5 GUI图形界面
6 重启
可以用 init Nubmer 更改启动级别
$ top 实时的监控系统状态信息和进程所使用的资源,显示进程的数据:包括PID,进程所属,优先级。。。
$ ps 列出系统中当前正在运行的进程,瞬时状态,类似快照 Process Status 的缩写
-a 与-e 类似的效用 显示所有的进程
-f 做一个更完整的输出
-ef 查看所有进程
-aux 显示进程信息,包括无终端的(x)和针对用户(u)的进程:如USER,PID,%CPU,%MEM等
$kill PID 结束指定Pid的进程,
usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
$crontab 任务调度 系统周期性要执行的工作或某个用户定期要做的工作
-e 编辑任务调度
-r 终止任务调度
-l 列出当前有哪些任务调度
文件名后缀为 .bak的文件 :备份文件
文件管理(访问权限)
第一个字符是 . 代表为隐藏文件
ls -a --> ll
-rw-r--r-- 1 yugu yugu 655 May 17 04:32 .profile
drwxrwxr-x 3 yugu yugu 4096 May 17 00:24 software/
文件类型 + 访问权限 + 硬链接数量 + 所属用户 + 组 + 大小 + 修改时间 +文件名
文件类型:
d:目录
-:普通文件
l:软连接
b:块设备文件
c:字符设备文件
rw- --- --- :三个字符为一组,共三组
第一组: 指定当前所属用户的访问权限
第二组: 指定了组访问权限
第三组: 指定了其它用户的访问权限
r: read 可读权限 4
w: write 可写权限 2
x: excute 可执行权限 1
-: 拒绝访问
root用户没有任何访问权限的限制
如果文件本身是目录的话:
1.没有x权限,代表该目录不能使用cd命令进入
2.没有w权限,代表该目录中不能创建/保存文件
$chmod 修改文件权限
usage: chmod 权限 FileName
1.权限符号
a: all
g: group
o: other
u: user
chmod a+w test.txt 所有用户增加 写权限
chmod a-rwx t1.txt 所有用户删除读写执行权限
chmod u+rwx,o+r,g+rx t1.txt 复杂单独权限制定用逗号隔开
chmod a=r,u+wx,g+x t1.txt 复杂单独权限制定用逗号隔开
2.权限八进制数值
r: 4
w: 2
x: 1
-: 0
chmod 777 t1.txt 所有用户添加读,写,执行权限
第一个7代表当前所属用户权限:对应 r+w+x 即 rwx
第二个7代表当前所属用户所在组权限:对应 r+w+x 即 rwx
第三个7代表其它组用户权限:对应 r+w+x 即 rwx
chmod 754 t1.txt
-c, --changes like verbose but report only when a change is made
-f, --silent, --quiet suppress most error messages
-v, --verbose output a diagnostic for every file processed
--no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/'
--reference=RFILE use RFILE's mode instead of MODE values
-R, --recursive change files and directories recursively
--help display this help and exit
--version output version information and exit
$chown 更改文件主权(拥有者 组)
sudo chown [-R] 所属用户名:组名 FileName
sudo chown -R root:root temp/
-R recursive 递归更改主权
软链接
$ln -s src desc
硬链接
$ln src desc
软硬链接的区别:
软链接是以路径的形式存在,硬链接是以文件副本的形式存在,但不占用实际空间。
软链接可以跨文件系统,硬链接无法跨文件擦护功能键
可以对目录创建软链接,但不能对目录创建硬链接
可以对不存在的文件创建软链接,但不能对不存在的文件创建硬链接
2021年5月19日14:09:06
内容回顾
文件管理
文件类型 访问权限 所属用户 用户所在组 其它用户 大小 时间 文件名
d - l b c 目录,普通文件,软链接,块,字符
r,w,d,- 读,写,执行,无权限 4,2,1,0
a,u g o 所有用户,用户,组,其它用户 :all, user ,group ,other
更改权限和主权: chmod chown
$chmod [-R] 权限 文件名
权限: 权限符号 a u g o
权限数值 4,2,1,0
$chown [-R] 所属用户名:组名 FileName
sudo chown -R root:root temp/
-R recursive 递归更改主权
软硬链接 ln -s src desc
ln src dec
2021年5月19日14:18:14
网络服务
/etc/network/interfaces
网络协议
TCP/UDP
TCP:面向连接的,可靠的网络传输协议,打电话
UDP:非面向连接的,不可靠的数据包协议,发短信
网络节点
网络设备:计算机(无论个人电脑或服务器)路由器,交换机,网桥,网关
早些年有用集线器
IP地址:Internet Protocol Address 互联网协议地址
ipv4和ipv6
IPv4 Internet Protocol version 4
32位的二进制数,如: 192.168.1.119
IPv6 Internet Protocol version 6
128位的二级制数,如:fe80::b47a:2fc9:72e1:b80b%5
IP地址被分为以下四类地址,
A: 1字节的网络地址+3字节主机地址组成,1.0.0.1~127.255.255.254
B: 2字节的网络地址+2字节主机地址组成,128.0.0.1~191.255.255.254
C: 3字节的网络地址+1字节主机地址组成,192.0.0.1~223.255.255.254
D: (multicast address)组播地址, 224.0.0.0~239.255.255
子网:NetMask 从逻辑上把一个大网络划分为一些小网络。
对于传统IP地址分类来说,
A类的子网掩码为:255.0.0.0
B类的子网掩码为:255.255.0.0
C类的子网掩码为:255.255.255.0
超网:Supernetting 同子网类似的概念
通过较短的子网掩码将多个小网络合成一个大网络
例如:一个单位分到了8个C类地址:202.120.224.0~202.120.231.0
只要将其子网掩码设置为255.255.248.0,就能使这些C类网络互通
IP地址管理: 手工管理模式,DHCP管理模式,交换机管理模式
$apt :Advanced Package Tool,又名apt-get,是一款适用于Unix和Linux系统的应用程序管理器
#更新
apt-get update 更新安装源
apt-get upgrade 更新已安装的软件包
apt-get dist-upgrade 更新已安装的软件包(自动识别并处理依赖关系的改变)
#查询
dpkg -l 列出已安装的所有软件包
apt-cache search PackageName 搜索软件包
apt-cache show PackageName 获取软件包的相关信息, 如说明、大小、版本等
apt-cache depends PackageName 查看该软件包需要哪些依赖包
apt-cache rdepends PackageName 查看该软件包被哪些包依赖
apt-get check 检查是否有损坏的依赖
#安装与下载
apt-get install PackageName // 普通安装
apt-get install PackageName=VersionName // 安装指定包的指定版本
apt-get --reinstall install PackageName // 重新安装
apt-get build-dep PackageName // 安装源码包所需要的编译环境
apt-get -f install // 修复依赖关系
apt-get source PackageName // 下载软件包的源码
#卸载
apt-get remove PackageName // 删除软件包, 保留配置文件
apt-get --purge remove PackageName // 删除软件包, 同时删除配置文件
apt-get purge PackageName // 删除软件包, 同时删除配置文件
apt-get autoremove PackageName // 删除软件包, 同时删除为满足依赖
// 而自动安装且不再使用的软件包
apt-get --purge autoremove PackageName // 删除软件包, 删除配置文件,
// 删除不再使用的依赖包
apt-get clean && apt-get autoclean // 清除 已下载的软件包 和 旧软件包
2021年5月20日10:58:58
$su root #提权,
$cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份一份原来的源
$vim /etc/apt/sources.list # 修改源 全部删除换成阿里源,d100d i 粘贴 :wq
$apt-get update #更新列表
#tips:每个Ubuntu系统版本不同,代号也不一致
$cat /etc/issue # 查看当前系统版本
Ubuntu 16.04.7 LTS \n \l
#Ubuntu 12.04 (LTS)代号为precise。
#Ubuntu 14.04 (LTS)代号为trusty。
#Ubuntu 15.04 代号为vivid。
#Ubuntu 15.10 代号为wily。
#Ubuntu 16.04 (LTS)代号为xenial。
#这里我的环境是 Ubuntu 16.04.7 LTS \n \l 所以选择 代号为xenial的阿里源
#aliimage 2017.9.18
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
2021年5月19日20:33:04
#获取最高权限,更新安装源和软件包
su
apt-get update
apt-get dist-upgrade
#没安装过的话直接安装,安装过的先卸载原来的mysql
#apt-get --purge remove mysql
#安装mysql服务端,客户端,库包 可能出现设置密码
apt-get install mysql-server
apt-get install mysql-client
apt-get install libmysqlclient-dev
#输入如下命令进行检验是否安装mysql成功。
netstat -tap | grep mysql
root@ubuntu:/home/yugu# netstat -tap | grep mysql
#如图为安装成功
#tcp 0 0 localhost:mysql *:* LISTEN 23360/mysqld
#编辑mysql配置文件 开启远程访问
vi /etc/mysql/mysql.conf.d/mysqld.cnf
#注释掉 bind-address=127.0.0.1 后保存退出
#进入mysql服务 密码是之前设置的,如果没设置的话试一下123456,或者在配置文件设置一下
mysql -uroot -p 密码
#给远程连接的计算机授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
#如下所示:
#mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT #OPTION;
#Query OK, 0 rows affected, 1 warning (0.00 sec)
#刷新配置信息,退出mysql服务,重启mysql服务就完成了
flush privileges;
exit;
service mysql restart
配置文件更改如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QI2Qu0fS-1621592819903)(%20Linux%E5%91%BD%E4%BB%A4%E8%AF%BE%E5%A0%82/img/image-20210519200938581.png)]
2021年5月20日08:34:44
#切换root提权,更新软件列表及安装包
$su root
$apt-get update
$apt-get disk-upgrade
#下载安装tomcat8
$apt-get install tomcat8
#检查是否安装?看一下tomcat目录在哪
$whereis tomcat8
#输出信息为:tomcat8: /etc/tomcat8 /usr/share/tomcat8
#我们的webapps目录在 /var/lib/tomcat8下,通过ll命令查看一下,确认是否有问题!
ll /var/lib/tomcat8
#输出信息为:
#total 16
#drwxr-xr-x 4 root root 4096 May 19 17:56 ./
#drwxr-xr-x 46 root root 4096 May 19 17:56 ../
#lrwxrwxrwx 1 root root 12 Aug 3 2020 conf -> /etc/tomcat8/
#drwxr-xr-x 2 tomcat8 tomcat8 4096 Aug 3 2020 lib/
#lrwxrwxrwx 1 root root 17 Aug 3 2020 logs -> ../../log/tomcat8/
#drwxrwxr-x 3 tomcat8 tomcat8 4096 May 19 17:56 webapps/
#lrwxrwxrwx 1 root root 19 Aug 3 2020 work -> ../../cache/tomcat8/
#安装tomcat后默认是启动了的
#主机上通过浏览器测试一下网址为 虚拟机的 ipv4:8080/
192.168.52.128:8080/
#页面展示正常说明成功了
#没成功的先检查一下防火墙,防火墙确认没问题后,试一下在虚拟机中打开8080端口
$service tomcat8 status 查看tomcat服务状态
$service tomcat8 start 启动tomcat服务
$service tomcat8 stop 停止tomcat服务
$vim /etc/tomcat8/tomcat-users.xml
#注册用户权限如下;
#
#编辑完成用户名和密码后,重启一下tomcat服务
$service tomcat8 restart
#再次进入http://192.168.52.128:8080/manager/html 输入用户密码,成功进入管理页面!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QDSs0QwB-1621592819905)(%20Linux%E5%91%BD%E4%BB%A4%E8%AF%BE%E5%A0%82/img/image-20210520090954762.png)]
配置 /etc/tomcat8/tomcat-users.xml 如图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ezf5vuIk-1621592819907)(%20Linux%E5%91%BD%E4%BB%A4%E8%AF%BE%E5%A0%82/img/image-20210520102635128.png)]
编辑完成后重启tomcat服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EViEp6ja-1621592819907)(%20Linux%E5%91%BD%E4%BB%A4%E8%AF%BE%E5%A0%82/img/image-20210520095601492.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ChI8Renv-1621592819908)(%20Linux%E5%91%BD%E4%BB%A4%E8%AF%BE%E5%A0%82/img/image-20210520103103764.png)]
2021年5月20日10:33:01
1.root提权,更新应用列表与软件包
$su root
$apt-get update
$apt-get upgrade
2.下载docker 完成后查看dokcer版本
#安装docker
$apt-get install docker.io
#查看版本
$docker -v 或 $docker version
3.使用docker
参考官方文档学习吧! https://docs.docker.com/engine/reference/run/
参考菜鸟教程学习吧! https://www.runoob.com/docker/docker-hello-world.html
#查看帮助信息
$docker help
$docker login #登录自己的docker账户
#菜鸟教程学习 https://www.runoob.com/docker/docker-hello-world.html
$docker run ubuntu:15.10 /bin/echo "Hello world"
Unable to find image 'ubuntu:15.10' locally
15.10: Pulling from library/ubuntu
7dcf5a444392: Pull complete
759aa75f3cee: Pull complete
3fa871dc8a2b: Pull complete
224c42ae46e7: Pull complete
Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3
Status: Downloaded newer image for ubuntu:15.10
Hello world
Ubuntu虚拟机中Docker安装其它应用
#docker 安装Nginx
$sudo usermod -aG docker yugu #给用户yugu提权,不用每次sudo 来使用docker,添加一次docker组就够了
$docker search nginx #查询docker官方仓库中的Nginx镜像
$docker pull nginx:latest #下载最新版本的Nginx镜像
$docker run --name nginx-test -p 8080:80 -d nginx #后台运行 nginx-test 容器,映射端口为 8080:8080
#主机中打开浏览器访问 虚拟机ipv4:8080 ,正常显示Nginx页面
192.168.52.128:80
#docker 安装 Tomcat
$docker search tomcat #查询docker官方仓库中的Tomcat镜像
$docker pull tomcat #下载最新版本的Tomcat镜像
$docker run --name tomcat-test -p 8080:8080 -d tomcat
#同样主机中打开浏览器访问 192.168.52.128:80 (即虚拟机ipv4:8080) ,发现报错404;
#这是正常现象,阿里云下载下来的tomcat是阉割过的,webapps目录下没有任何文件,我们自然什么访问不到页面的,
#页面和项目文件都在webapps.dist中,我们接下来进入tomcat容器中的命令行中,把复制一份到webapps中
$docker exec tomcat-test -it /bin/bash
$ls webapps.dist ls webapps #检查一下,文件是否如我们所预料的一样!
$copy -r webapps.dist/* webapps
#再次在主机访问 192.168.52.168:80 ,就出现汤姆猫了!
#docker 安装node
$docker pull node:latest #下载node镜像到本地
$docker run -itd --name node-test node #开启一个node容器
$docker exec -it node-test /bin/bash #进入容器命令行
$node -v #检查node版本
#安装 redis 1.安装并启动,进入交互式命令行,测试是否正常
$docker run -itd --name redis-test -p 6379:6379 redis
$docker exec -it redis-test /bin/bash
#虚拟机中测试
root@c9d54c7fa5f9:/data# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> set test helloworld!
OK
127.0.0.1:6379> get test
"helloworld!"
127.0.0.1:6379>
#主机中cmd命令行测试
C:\Users\zhou1>redis-cli -h 192.168.52.128 -p 6379
192.168.52.128:6379>
192.168.52.128:6379> get test
"helloworld!"
192.168.52.128:6379>
#安装 apche
$docker run --name apache-test -p 80:80 -id httpd #运行 httpd的容器,没有镜像自动下载
主机中打开浏览器访问 虚拟机ipv4:80 192.168.52.128:80
-r webapps.dist/* webapps
#再次在主机访问 192.168.52.168:80 ,就出现汤姆猫了!
#docker 安装node
$docker pull node:latest #下载node镜像到本地
$docker run -itd --name node-test node #开启一个node容器
$docker exec -it node-test /bin/bash #进入容器命令行
$node -v #检查node版本
#安装 redis 1.安装并启动,进入交互式命令行,测试是否正常
$docker run -itd --name redis-test -p 6379:6379 redis
$docker exec -it redis-test /bin/bash
#虚拟机中测试
root@c9d54c7fa5f9:/data# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> set test helloworld!
OK
127.0.0.1:6379> get test
“helloworld!”
127.0.0.1:6379>
#主机中cmd命令行测试
C:\Users\zhou1>redis-cli -h 192.168.52.128 -p 6379
192.168.52.128:6379>
192.168.52.128:6379> get test
“helloworld!”
192.168.52.128:6379>
#安装 apche
$docker run --name apache-test -p 80:80 -id httpd #运行 httpd的容器,没有镜像自动下载
主机中打开浏览器访问 虚拟机ipv4:80 192.168.52.128:80