Board logo

标题: CentOS8_在Docker的容器内自动启动服务 [打印本页]

作者: admin    时间: 2023-3-18 20:51     标题: CentOS8_在Docker的容器内自动启动服务

笺注:Docker的安装可参考 CentOS8_在Docker中使用Nginx的反向代理 查看Docker的版本信息: [root@centos8 ~]# docker -v Docker version 20.10.21, build baeda1f [root@centos8 ~]# 已经设置开机自动启动Docker: [root@centos8 ~]# systemctl is-enabled docker enabled [root@centos8 ~]# 从公网下载镜像:( 以下是下载Ubuntu 20.04的镜像 ) [root@centos8 ~]# docker pull ubuntu:20.04 20.04: Pulling from library/ubuntu 06d39c85623a: Pull complete Digest: sha256:24a0df437301598d1a4b62ddf59fa0ed2969150d70d748c84225e6501e9c36b9 Status: Downloaded newer image for ubuntu:20.04 docker.io/library/ubuntu:20.04 [root@centos8 ~]# 查看宿主机的所有镜像: [root@centos8 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 20.04 1c5c8d0b973a 8 days ago 72.8MB [root@centos8 ~]# 使用镜像“ubuntu:20.04”创建并启动容器“Vsftpd_1”: [root@centos8 ~]# docker run -itd --name Vsftpd_1 -p 21:21 -v /opt/share:/usr/share/html ubuntu:20.04 5144089bae4fa6160845b89c66f17463c38cb15a9cae4e9698855e99c5ea9d1b [root@centos8 ~]# 注释: -itd : 以交互模式情况下后台运行。 --name : 指定容器名称。 -p 端口映射 : 第一个21是宿主机的端口,暴露给外部直接访问;第二个21是容器的端口。 -v 挂载目录 : 这里是把宿主机的目录/opt/share挂载到容器的目录/usr/share/html;假如目录不存在,就会自动创建。 ubuntu:20.04 : 镜像名称:版本号 在宿主机查看正在运行的容器: [root@centos8 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5144089bae4f ubuntu:20.04 "/bin/bash" 57 seconds ago Up 56 seconds 0.0.0.0:21->21/tcp, :::21->21/tcp Vsftpd_1 [root@centos8 ~]# 注释:宿主机的TCP 21端口,映射到容器“Vsftpd_1”的TCP 21端口。 ### 进入容器“Vsftpd_1”: [root@centos8 ~]# docker exec -it Vsftpd_1 /bin/bash root@5144089bae4f:/# 查看容器“Vsftpd_1”的系统版本信息: root@5144089bae4f:/# cat /etc/issue Ubuntu 20.04.5 LTS \n \l root@5144089bae4f:/# uname -a Linux 5144089bae4f 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@5144089bae4f:/# 在容器“Vsftpd_1”中安装vsftpd: root@5144089bae4f:/# whoami root root@5144089bae4f:/# apt-get update root@5144089bae4f:/# apt-get -y install vsftpd 查看vsftpd的版本: root@5144089bae4f:/# vsftpd -v vsftpd: version 3.0.3 root@5144089bae4f:/# 建立FTP用户:(使用vsftpd用户验证) root@5144089bae4f:/# groupadd ftp_01 root@5144089bae4f:/# root@5144089bae4f:/# useradd -g ftp_01 -d /usr/share/html -s /bin/bash happy root@5144089bae4f:/# passwd happy New password: Retype new password: passwd: password updated successfully root@5144089bae4f:/# root@5144089bae4f:/# useradd -g ftp_01 -d /usr/share/html -s /bin/bash ftp_user_1 root@5144089bae4f:/# passwd ftp_user_1 New password: Retype new password: passwd: password updated successfully root@5144089bae4f:/# 设置FTP目录的权限:(属主有读写的权限;组员只可以读,不可以写;其他人不可以读写) root@5144089bae4f:/# chown -R happy:ftp_01 /usr/share/html root@5144089bae4f:/# root@5144089bae4f:/# chmod -R 750 /usr/share/html root@5144089bae4f:/# root@5144089bae4f:/# ls -ld /usr/share/html drwxr-x---. 3 happy ftp_01 93 Mar 14 03:09 /usr/share/html root@5144089bae4f:/# ### 在宿主机上修改容器“Vsftpd_1”的vsftpd的主配置文件: [root@centos8 ~]# docker cp Vsftpd_1:/etc/vsftpd.conf /root [root@centos8 ~]# vi vsftpd.conf 追加: userlist_deny=NO userlist_enable=YES userlist_file=/etc/allowed_users seccomp_sandbox=NO local_enable=YES pasv_promiscuous=YES write_enable=YES 在宿主机上,往容器“Vsftpd_1”上传修改好的文件: [root@centos8 ~]# docker cp /root/vsftpd.conf Vsftpd_1:/etc/vsftpd.conf [root@centos8 ~]# 再往容器“Vsftpd_1”上传以下文件:(允许登录FTP的系统用户) [root@centos8 ~]# cat allowed_users happy ftp_user_1 [root@centos8 ~]# [root@centos8 ~]# docker cp /root/allowed_users Vsftpd_1:/etc/ [root@centos8 ~]# Docker宿主机的防火墙其实可以不用打开TCP 21端口: [root@centos8 ~]# firewall-cmd --zone=public --list-ports [root@centos8 ~]# ### 在容器“Vsftpd_1”里重启vsftpd服务:(vsftpd服务不会自动启动) root@5144089bae4f:/# /etc/init.d/vsftpd restart [ OK ]pping FTP server vsftpd [ OK ]rting FTP server vsftpd root@5144089bae4f:/# 查看vsftpd服务的状态: root@5144089bae4f:/# service vsftpd status * FTP server is running root@5144089bae4f:/# 创建任务计划: root@5144089bae4f:/# apt-get -y install vim root@5144089bae4f:/# crontab -e -u root 追加: */1 * * * * chown -R happy:ftp_01 /usr/share/html */1 * * * * chmod -R 750 /usr/share/html 要手动启动任务计划服务:(cron服务不会自动启动) root@5144089bae4f:/# service cron status * cron is not running root@5144089bae4f:/# service cron start [ OK ]rting periodic command scheduler cron root@5144089bae4f:/# service cron status * cron is running root@5144089bae4f:/# ### Ubuntu18.04桌面版的客户端访问容器“Vsftpd_1”的FTP:(使用vsftpd用户验证) telnet 192.168.168.154 21 图片1.png 注释:容器“Vsftpd_1”要打开TCP 21端口。 打开Linux文件管理器,在左侧窗格中点击“其他位置”》“连接到服务器”: ftp://192.168.168.154 图片2.png 图片3.png 图片4.png 要手动切换到目录/usr/share/html 图片5.png 实验至此,对于容器“Vsftpd_1”的FTP目录里面的所有内容,happy可以下载、上传、修改、删除;ftp_user_1只可以下载。(支持中文) ###### ###### 在Docker的容器内自动启动vsftpd服务、cron服务: 进入容器“Vsftpd_1”: [root@centos8 ~]# docker exec -it Vsftpd_1 /bin/bash root@5144089bae4f:/# root@5144089bae4f:/# cd /etc/init.d root@5144089bae4f:/etc/init.d# root@5144089bae4f:/etc/init.d# ls cron hwclock.sh procps vsftpd root@5144089bae4f:/etc/init.d# 在容器“Vsftpd_1”里创建一个脚本: root@5144089bae4f:/# cat /etc/auto_service.sh #!/bin/bash /etc/init.d/vsftpd start /etc/init.d/cron start /bin/bash root@5144089bae4f:/# chmod 777 /etc/auto_service.sh root@5144089bae4f:/# root@5144089bae4f:/# ll /etc/auto_service.sh -rwxrwxrwx. 1 root root 70 Mar 17 15:01 /etc/auto_service.sh* root@5144089bae4f:/# 在宿主机把容器“Vsftpd_1”创建成一个新镜像: [root@centos8 ~]# docker commit Vsftpd_1 vsftpd_1:3.88 sha256:800cdc08eceee28ec90068c9640337ff37726c5014c59ad8e9f2e3376b4cc8d0 [root@centos8 ~]# 笺注: vsftpd_1:3.88 : 新镜像名称:版本号 再次,查看宿主机的所有镜像: [root@centos8 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE vsftpd_1 3.88 800cdc08ecee 52 seconds ago 184MB ubuntu 20.04 1c5c8d0b973a 9 days ago 72.8MB [root@centos8 ~]# 在宿主机创建Dockerfile文件: [root@centos8 ~]# vi Dockerfile 写入: FROM vsftpd_1:3.88 CMD ["/bin/bash","/etc/auto_service.sh"] 笺注: vsftpd_1:3.88 : 源镜像名称:版本号 根据Dockerfile文件创建成一个新镜像: [root@centos8 ~]# docker build -f ./Dockerfile -t vsftpd_1:3.99 . Sending build context to Docker daemon 22.53kB Step 1/2 : FROM vsftpd_1:3.88 ---> 800cdc08ecee Step 2/2 : CMD ["/bin/bash","/etc/auto_service.sh"] ---> Running in b5448a21e9c0 Removing intermediate container b5448a21e9c0 ---> 393e32f39ed6 Successfully built 393e32f39ed6 Successfully tagged vsftpd_1:3.99 [root@centos8 ~]# 笺注: vsftpd_1:3.99 : 新镜像名称:版本号 再次,查看宿主机的所有镜像: [root@centos8 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE vsftpd_1 3.99 393e32f39ed6 2 minutes ago 184MB vsftpd_1 3.88 800cdc08ecee 20 minutes ago 184MB ubuntu 20.04 1c5c8d0b973a 9 days ago 72.8MB [root@centos8 ~]# 使用镜像“vsftpd_1:3.99”创建并启动容器“Vsftpd_2”: [root@centos8 ~]# docker run -itd --name Vsftpd_2 -p 2121:21 -v /opt/share:/usr/share/html vsftpd_1:3.99 c885f5a502f6636ee2eb5e3a8bd433a9b40e4db4b380587dc903c4b16085bd27 [root@centos8 ~]# 注释: -itd : 以交互模式情况下后台运行。 --name : 指定容器名称。 -p 端口映射 : 2121是宿主机的端口,暴露给外部直接访问;21是容器的端口。 -v 挂载目录 : 这里是把宿主机的目录/opt/share挂载到容器的目录/usr/share/html;假如目录不存在,就会自动创建。 vsftpd_1:3.99 : 镜像名称:版本号 在宿主机查看所有的容器:(无论是否正在运行) [root@centos8 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c885f5a502f6 vsftpd_1:3.99 "/bin/bash /etc/auto…" 3 minutes ago Up 3 minutes 0.0.0.0:2121->21/tcp, :::2121->21/tcp Vsftpd_2 5144089bae4f ubuntu:20.04 "/bin/bash" 28 hours ago Up 49 minutes 0.0.0.0:21->21/tcp, :::21->21/tcp Vsftpd_1 [root@centos8 ~]# 注释:宿主机的TCP 2121端口,映射到容器“Vsftpd_2”的TCP 21端口。 ### 进入容器“Vsftpd_2”: [root@centos8 ~]# docker exec -it Vsftpd_2 /bin/bash root@c885f5a502f6:/# 查看vsftpd服务的状态: root@c885f5a502f6:/# service vsftpd status * FTP server is running root@c885f5a502f6:/# 查看cron服务的状态: root@c885f5a502f6:/# service cron status * cron is running root@c885f5a502f6:/# 笺注:实验至此,容器“Vsftpd_2”的vsftpd服务、cron服务会随宿容器的启动而启动。 在宿主机让容器“Vsftpd_2”随宿主机的启动而启动: [root@centos8 ~]# docker update --restart=always Vsftpd_2 Vsftpd_2 [root@centos8 ~]# 笺注:实验至此,容器“Vsftpd_2”的vsftpd服务、cron服务会随宿主机的启动而启动。 ### Ubuntu18.04桌面版的客户端访问容器“Vsftpd_2”的FTP:(使用vsftpd用户验证) telnet 192.168.168.154 2121 图片6.png 注释:容器“Vsftpd_2”要打开TCP 21端口。 打开Linux文件管理器,在左侧窗格中点击“其他位置”》“连接到服务器”: ftp://192.168.168.154:2121 图片7.png 图片8.png 图片9.png 要手动切换到目录/usr/share/html 图片11.png 实验至此,对于容器“Vsftpd_2”的FTP目录里面的所有内容,happy可以下载、上传、修改、删除;ftp_user_1只可以下载。(支持中文) 相关文章: CentOS8_在Docker中安装vsftpd CentOS8_在Docker中安装Flask CentOS8_在Docker中安装PureFTPd CentOS8_在Docker中限制容器可用的CPU个数和内存量

图片附件: 图片1.png (2023-3-18 20:57, 42.64 KB) / 下载次数 16
http://blog.zhuohua.store/attachment.php?aid=22193&k=328710845c934a8eb77d6598d2975078&t=1714338874&sid=Xy716F



图片附件: 图片2.png (2023-3-18 20:57, 60.97 KB) / 下载次数 15
http://blog.zhuohua.store/attachment.php?aid=22194&k=974582ef92568a90e1a9aba265afbea0&t=1714338874&sid=Xy716F



图片附件: 图片3.png (2023-3-18 20:58, 34.51 KB) / 下载次数 12
http://blog.zhuohua.store/attachment.php?aid=22195&k=338ffd349996967d555b9b484871be78&t=1714338874&sid=Xy716F



图片附件: 图片4.png (2023-3-18 20:58, 90.3 KB) / 下载次数 15
http://blog.zhuohua.store/attachment.php?aid=22196&k=248593919b126e91e0d26c91ba822247&t=1714338874&sid=Xy716F



图片附件: 图片5.png (2023-3-18 20:58, 42.64 KB) / 下载次数 17
http://blog.zhuohua.store/attachment.php?aid=22197&k=f54f94e78c19de1f61a39843bfa53a22&t=1714338874&sid=Xy716F



图片附件: 图片6.png (2023-3-18 21:03, 41.95 KB) / 下载次数 12
http://blog.zhuohua.store/attachment.php?aid=22198&k=60f2bb9b84aa38cd1c23641068ce23f7&t=1714338874&sid=Xy716F



图片附件: 图片7.png (2023-3-18 21:03, 62.28 KB) / 下载次数 12
http://blog.zhuohua.store/attachment.php?aid=22199&k=c5bb54621c0fa84aaab21aefde57a322&t=1714338874&sid=Xy716F



图片附件: 图片8.png (2023-3-18 21:03, 34.99 KB) / 下载次数 13
http://blog.zhuohua.store/attachment.php?aid=22200&k=dd148172a6bb498f4f827fbd425f29e4&t=1714338874&sid=Xy716F



图片附件: 图片9.png (2023-3-18 21:04, 85.8 KB) / 下载次数 20
http://blog.zhuohua.store/attachment.php?aid=22201&k=fea88f8eca91e404740d0bc19bc4cda8&t=1714338874&sid=Xy716F



图片附件: 图片11.png (2023-3-18 21:04, 45.83 KB) / 下载次数 14
http://blog.zhuohua.store/attachment.php?aid=22202&k=2284381fd85bddc44feda6b1a0b698cd&t=1714338874&sid=Xy716F






欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2