笺注:Docker的安装可参考 CentOS8_在Docker中使用Nginx的反向代理
查看Docker的版本信息:
[root@centos8 ~]# docker -v
Docker version 20.10.21, build baeda1f
[root@centos8 ~]#
######
从公网下载镜像:( 以下是下载MariaDB10.3.38的镜像 )
[root@centos8 ~]# docker pull mariadb:10.3.38
10.3.38: Pulling from library/mariadb
df6635ed1257: Pull complete
d5dcb717eef2: Pull complete
a070ce9ccedb: Pull complete
a053d9150480: Pull complete
381d7acd8833: Pull complete
589a0f4fa64a: Pull complete
c639e63296d1: Pull complete
705d9b9360b6: Pull complete
c63a93d49143: Pull complete
Digest: sha256:5157cee1d3297142bbcd7798787395086b3c1bd2f424362a02a022f203d1c944
Status: Downloaded newer image for mariadb:10.3.38
docker.io/library/mariadb:10.3.38
[root@centos8 ~]#
查看宿主机的所有镜像:
[root@centos8 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb 10.3.38 c779ed869cd4 9 days ago 369MB
[root@centos8 ~]#
使用镜像“mariadb:10.3.38”创建并启动容器“Samba_1”:
[root@centos8 ~]# docker run -itd --name Samba_1 -p 445:445 -e MYSQL_ROOT_PASSWORD=888 -v /opt/share:/home/database_1 mariadb:10.3.38
9c2e702d9be36803d73931219441fda0694769869fbf9870b39c64922d347ab5
[root@centos8 ~]#
注释:
-itd : 以交互模式情况下后台运行。
--name : 指定容器名称。
-p 端口映射 : 第一个445是宿主机的端口,暴露给外部直接访问;第二个445是容器的端口。
-e 环境配置 : 指定数据库管理员root@localhost的密码为888
-v 挂载目录 : 这里是把宿主机的目录/opt/share挂载到容器的目录/home/database_1;假如目录不存在,就会自动创建。
mariadb:10.3.38 : 镜像名称:版本号
在宿主机查看正在运行的容器:
[root@centos8 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c2e702d9be3 mariadb:10.3.38 "docker-entrypoint.s…" 50 seconds ago Up 49 seconds 0.0.0.0:445->445/tcp, :::445->445/tcp, 3306/tcp Samba_1
[root@centos8 ~]#
注释:宿主机的TCP 445端口,映射到容器“Samba_1”的TCP 445端口。
###
进入容器“Samba_1”:
[root@centos8 ~]# docker exec -it Samba_1 /bin/bash
root@9c2e702d9be3:/#
查看容器“Samba_1”的系统版本信息:
root@9c2e702d9be3:/# cat /etc/issue
Ubuntu 20.04.5 LTS \n \l
root@9c2e702d9be3:/# uname -a
Linux 9c2e702d9be3 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
root@9c2e702d9be3:/#
查看MariaDB的版本信息:
root@9c2e702d9be3:/# mysql -V
mysql Ver 15.1 Distrib 10.3.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
root@9c2e702d9be3:/#
在容器“Samba_1”中安装Samba:
root@9c2e702d9be3:/# whoami
root
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# apt-get update
root@9c2e702d9be3:/# apt-get -y install samba samba-common
查看Samba的版本:
root@9c2e702d9be3:/# smbd --version
Version 4.15.13-Ubuntu
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# dpkg -l |grep samba
ii python3-samba 2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64 Python 3 bindings for Samba
ii samba 2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64 SMB/CIFS file, print, and login server for Unix
ii samba-common 2:4.15.13+dfsg-0ubuntu0.20.04.1 all common files used by both the Samba server and client
ii samba-common-bin 2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64 Samba common files used by both the server and the client
ii samba-dsdb-modules:amd64 2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64 Samba Directory Services Database
ii samba-libs:amd64 2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64 Samba core libraries
ii samba-vfs-modules:amd64 2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64 Samba Virtual FileSystem plugins
root@9c2e702d9be3:/#
查看Samba的主配置文件:(默认就是允许使用Samba用户验证、匿名用户)
root@9c2e702d9be3:/# cat /etc/samba/smb.conf |grep -v "^#"|grep -v "^;"|grep -v "^$"
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
root@9c2e702d9be3:/#
创建共享目录:
root@9c2e702d9be3:/# chmod -R 777 /home/database_1
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# mkdir -p /home/database_2
root@9c2e702d9be3:/# chmod -R 777 /home/database_2
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# mkdir -p /home/database3
root@9c2e702d9be3:/# chmod -R 777 /home/database3
root@9c2e702d9be3:/#
添加Samba用户:(使用Samba用户验证)
root@9c2e702d9be3:/# useradd -s /sbin/nologin zhuohua
root@9c2e702d9be3:/# smbpasswd -a zhuohua
New SMB password:
Retype new SMB password:
Added user zhuohua.
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# useradd -s /sbin/nologin user_1
root@9c2e702d9be3:/# smbpasswd -a user_1
New SMB password:
Retype new SMB password:
Added user user_1.
root@9c2e702d9be3:/#
###
在宿主机上修改容器“Samba_1”的Samba的主配置文件:
[root@centos8 ~]# docker cp Samba_1:/etc/samba/smb.conf ./
[root@centos8 ~]# vi smb.conf
追加:
## 用户zhuohua对目录/home/database_1里的数据可读可写;用户user_1对目录/home/database_1里的数据只可读:
[Share1] ##共享时目录显示的名称
comment = 共享文件夹1
path = /home/database_1
public = no
writeable = yes
valid users = zhuohua,user_1
read list = user_1
write list = zhuohua
## 用户zhuohua对目录/home/database_2里的数据可读可写;用户user_1对目录/home/database_2里的数据不可读写:
[共享文件夹2] ##共享时目录显示的名称
comment = 共享文件夹2
path = /home/database_2
public = no
writeable = yes
valid users = zhuohua
write list = zhuohua
## 用户zhuohua对目录/home/database3里的数据只可读;用户user_1对目录home/database3里的数据不可读写:
[共享文件夹_share3] ##共享时目录显示的名称
comment = 共享文件夹3
path = home/database3
public = no
writeable = yes
valid users = zhuohua
read list = zhuohua
在宿主机上,往容器“Samba_1”上传修改好的文件:
[root@centos8 ~]# docker cp ./smb.conf Samba_1:/etc/samba/
[root@centos8 ~]#
###
在容器“Samba_1”里重启Samba服务:(Samba服务不会自动启动)
root@9c2e702d9be3:/# service smbd restart
[ OK ]pping SMB/CIFS daemon smbd
[ OK ]rting SMB/CIFS daemon smbd
root@9c2e702d9be3:/#
查看Samba的状态:
root@9c2e702d9be3:/# /etc/init.d/smbd status
* smbd is running
root@9c2e702d9be3:/#
创建任务计划:
root@9c2e702d9be3:/# apt-get -y install vim
root@9c2e702d9be3:/# crontab -e -u root
覆盖:
*/1 * * * * chmod -R 777 /home/database_1
*/1 * * * * chmod -R 777 /home/database_2
*/1 * * * * chmod -R 777 /home/database3
查看任务计划:
root@9c2e702d9be3:/# crontab -l -u root
*/1 * * * * chmod -R 777 /home/database_1
*/1 * * * * chmod -R 777 /home/database_2
*/1 * * * * chmod -R 777 /home/database3
root@9c2e702d9be3:/#
要手动启动任务计划服务:(cron服务不会自动启动)
root@9c2e702d9be3:/# service cron status
* cron is not running
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# service cron start
[ OK ]rting periodic command scheduler cron
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# service cron status
* cron is running
root@9c2e702d9be3:/#
###
Windows客户端访问容器“Samba_1”的Samba共享:(使用Samba用户验证)
###
Ubuntu18.04桌面版的客户端访问容器“Samba_1”的Samba共享:(使用Samba用户验证)
打开Linux文件管理器,在左侧窗格中点击“其他位置”》“连接到服务器”:
smb://192.168.168.154/Share1
实验至此,
## 用户zhuohua对目录/home/database_1里的数据可读可写;用户user_1对目录/home/database_1里的数据只可读(支持中文)
## 用户zhuohua对目录/home/database_2里的数据可读可写;用户user_1对目录/home/database_2里的数据不可读写(支持中文)
## 用户zhuohua对目录/home/database3里的数据只可读;用户user_1对目录home/database3里的数据不可读写(支持中文)
######
######
Samba匿名共享:
在容器“Samba_1”里修改Samba的主配置文件:
root@9c2e702d9be3:/# vi /etc/samba/smb.conf
追加:
[共享文件夹] ##共享时目录显示的名称
comment = public
path = /home/database4
browseable = yes
public = yes
writeable = no
注释:要删除前面添加的代码。
再次,查看Samba的主配置文件:
root@9c2e702d9be3:/# cat /etc/samba/smb.conf |grep -v "^#"|grep -v "^;"|grep -v "^$"
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
[共享文件夹]
comment = public
path = /home/database4
browseable = yes
public = yes
writeable = no
root@9c2e702d9be3:/#
创建共享目录:
root@9c2e702d9be3:/# mkdir -p /home/database4
root@9c2e702d9be3:/# chmod -R 777 /home/database4
root@9c2e702d9be3:/#
在容器“Samba_1”里重启Samba服务:
root@9c2e702d9be3:/# /etc/init.d/smbd restart
[ OK ]pping SMB/CIFS daemon smbd
[ OK ]rting SMB/CIFS daemon smbd
root@9c2e702d9be3:/#
查看Samba的状态:
root@9c2e702d9be3:/# service smbd status
* smbd is running
root@9c2e702d9be3:/#
###
Windows客户端访问容器“Samba_1”的Samba共享:(使用Samba匿名用户)
实验至此,
## 不需要用户名、密码验证就可以登录了
## 匿名用户对目录/home/database4里的数据只可读(支持中文)
######
######
登录容器“Samba_1”时,自动启动Samba服务、cron服务:
进入容器“Samba_1”:
[root@centos8 ~]# docker exec -it Samba_1 /bin/bash
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# whoami
root
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# pwd
/
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# cd ~
root@9c2e702d9be3:~# pwd
/root
root@9c2e702d9be3:~#
root@9c2e702d9be3:~# ls -alh
total 32K
drwx------. 1 root root 67 Mar 13 04:10 .
drwxr-xr-x. 1 root root 85 Mar 13 01:17 ..
-rw-------. 1 root root 1.9K Mar 13 04:07 .bash_history
-rw-r--r--. 1 root root 3.1K Dec 5 2019 .bashrc
-rw-r--r--. 1 root root 161 Dec 5 2019 .profile
-rw-r--r--. 1 root root 0 Mar 13 01:20 .selected_editor
-rw-------. 1 root root 15K Mar 13 03:54 .viminfo
-rw-r--r--. 1 root root 165 Mar 2 04:44 .wget-hsts
root@9c2e702d9be3:~#
root@9c2e702d9be3:~# vi .bashrc
追加:
service smbd start
service cron start
root@9c2e702d9be3:~# tail -3 .bashrc
#fi
service smbd start
service cron start
root@9c2e702d9be3:~#
在宿主机重启容器“Samba_1”:
[root@centos8 ~]# docker restart Samba_1
Samba_1
[root@centos8 ~]#
再次,进入容器“Samba_1”:
[root@centos8 ~]# docker exec -it Samba_1 /bin/bash
[ OK ]rting SMB/CIFS daemon smbd
[ OK ]rting periodic command scheduler cron
root@9c2e702d9be3:/#
笺注:至此,登录容器“Samba_1”时,会自动启动Samba服务、cron服务。
相关文章:
用户管理
Samba用户验证(一)
本地备份站点目录和数据库+crontab计划任务
CentOS8_在Docker中安装vsftpd |