docker 的 Dockerfile 简单使用

#注意事项:容器内是否能正常使用防火墙取决于 你的宿主机和容器是否是同一种系统

#服务器系统 推荐使用 almalinux 容器镜像下载 docker pull almalinux:8.8

#桌面系统 推荐 deepin和mint

附件下载  有道云笔记

下面是编译一个新镜像 更新系统 安装ssh 以及提升容器权限
FROM ubuntu:22.04 表示依赖那个版本创建镜像
MAINTAINER i8520 表示作者信息
COPY 的使用 $HOME/桌面/123文件或文件夹 复制到镜像里的/data
COPY $HOME/桌面/123 /data
ENV NAME_A="123" 表示变量全局可用 Dockerfile文件内 或者镜像里
RUN apt update && apt upgrade -y 表示执行系镜像更新
RUN echo '123' > /home/123.txt 执行一条命令把 123添加到镜像中的 /home/123.txt
RUN apt install -y init 表示安装用于启动容器自启动服务
CMD ["/sbin/init"] 表示系统 参数 提权的,默认是 CMD ["/bin/bash"]

使用 apt 包管理的 Linux发行版 把下面代码保存在Dockerfile文件

# 基于 ubuntu:20.04
####################################################
# --no-cache 表示不缓存
# -t ubuntubt:1.0 表示镜像名字ubuntubt版本1.0
# docker build --no-cache -t ubuntubt:1.0 .
#---------------------------------------------------
# 使用 distrobox 创建镜像,MYubuntuBT是镜像名字
# distrobox create --image ubuntubt:1.0 MYubuntuBT
#---------------------------------------------------
# 进入 MYubuntuBT容器
# distrobox enter MYubuntuBT
#---------------------------------------------------
# 在容器执行这条命令 把程序快捷启动发送到开始菜单,AppName程序名字
# distrobox-export --app AppName
#---------------------------------------------------
# COPY dac /data
# 如果是文件就会复制到镜像里的/data 如时文件夹就会把dac里的文件复制到/data
####################################################
FROM ubuntu:20.04
MAINTAINER 酷谷的谷子
ENV PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
RUN export PATH=$PATH
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN apt update  -y && apt upgrade -y && apt install -y 'apt-file' && 'apt-file' update
RUN apt install -y iproute2 net-tools iputils-ping libsasl2-dev init openssh-server \
vim libc-ares2 sudo p7zip-full curl zip unzip wget libcurl4-openssl-dev expect \
libdatrie1 libnss3 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 \
libfuse2 psmisc fuse libxml2-dev openssl* libcurl4-openssl-dev pkg-config \
fonts-wqy-microhei fonts-wqy-zenhei fonts-arphic-ukai fonts-arphic-uming \
fontconfig xfonts-utils language-pack-zh-hans autoconf g++ make openssl libssl-dev 
COPY SR /
RUN /bin/bash -c "\
mv /MYStart /bin;chmod -R 755 /bin/MYStart;mkdir -p /usr/share/fonts/my_fonts;\
mv /simsun.ttc /usr/share/fonts/my_fonts;cd /usr/share/fonts/my_fonts;\
mkfontscale;mkfontdir;fc-cache -fv;/bin/MYStart"
CMD ["/bin/bash"]

使用 yum 包管理的 Linux发行版把下面代码保存在Dockerfile文件

RUN rpm --rebuilddb && yum install initscripts 表示安装用于启动容器自启动服务

# centos
FROM centos:centos7.9.2009
MAINTAINER 酷谷的谷子
RUN rpm --rebuilddb && yum update -y && yum upgrade -y
RUN rpm --rebuilddb && yum install initscripts wget passwd openssl openssh-server -y
RUN rpm --rebuilddb && yum -y install zip unzip p7zip p7zip-plugins curl
RUN rpm --rebuilddb && yum -y fontconfig mkfontscale
RUN echo '123' > /home/123.txt
CMD ["/usr/sbin/init"]
#----------------------------
# 基于 Almalinux 8.8 容器制作
# docker build .
#----------------------------
FROM almalinux:8.8
MAINTAINER 酷谷的谷子
#----------------------------
# 更新系统安装 SSH 
#----------------------------
RUN yum update -y
RUN yum upgrade -y
RUN yum install initscripts wget passwd openssl openssh-server fontconfig mkfontscale -y
#----------------------------
# 安装防火墙
#----------------------------
RUN yum -y install firewalld iptables
RUN systemctl enable  firewalld
#----------------------------
# 配置 ssh 
#----------------------------
ENV SSH_A="#Port 22"
ENV SSH_A_A="Port 22"
ENV SSH_B="#AddressFamily any"
ENV SSH_B_B="AddressFamily any"
ENV SSH_C="#ListenAddress 0.0.0.0"
ENV SSH_C_C="ListenAddress 0.0.0.0"
ENV SSH_D="#PermitEmptyPasswords no"
ENV SSH_D_D="PermitEmptyPasswords yes"
RUN sed -i -r "s|${SSH_A}|${SSH_A_A}|g" /etc/ssh/sshd_config
RUN sed -i -r "s|${SSH_B}|${SSH_B_B}|g" /etc/ssh/sshd_config
RUN sed -i -r "s|${SSH_C}|${SSH_C_C}|g" /etc/ssh/sshd_config
RUN sed -i -r "s|${SSH_D}|${SSH_D_D}|g" /etc/ssh/sshd_config
RUN systemctl enable sshd.service
#----------------------------
# 系统参数 提权的
# 正常情况 CMD ["/bin/bash"]
#----------------------------
CMD ["/usr/sbin/init"]

使用方式:cd 到存有Dockerfile 文件的目录 执行 

#ubuntux镜像名字版本1.0
# -t ubuntubt:1.0  
#编译镜像时不保存缓存
# --no-cache
docker build --no-cache -t ubuntubt:1.0 .

给刚才编译的镜像 取个名字 先查看一下当前本地镜像 docker images

给刚才编译的镜像创建容器

#docker images
#容器的名字
CONTAINER_NAME="MHZX-SR"
#刚才创建镜像修改的名字
NEW_IMAGES_NAME="new-ubuntu2204"
REPOSITORY_TAG_NAME="${NEW_IMAGES_NAME}:latest"
#映射到宿主机的端口
#PORT_A="-p 22886:1314 -p 22885:22"
PORT_A='--net=host'
#映射文件夹 宿主机${HOME}/data映射到容器/data
VOLUME_A="-v ${HOME}/data:/data"
VOLUME_B="-v ${HOME}/www:/www"
#提权 yum 包管理
#CMD_INI='/usr/sbin/init'
#提权 apt 包管理
CMD_INI='/sbin/init'
docker run  -d --name ${CONTAINER_NAME} ${PORT_A} \
--privileged=true ${VOLUME_A} ${VOLUME_B} ${REPOSITORY_TAG_NAME} ${CMD_INI}

启动动容器docker start 容器名称

进入容器docker exec -it 容器名称 /bin/bash

passwd root 设置容器密码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/634821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能小程序小部件(Widget)媒体组件属性说明和示例代码汇总

camera 基础库 2.2.0 开始支持, 低版本需做兼容处理。 系统相机。相关 API:ty.createCameraContext。这是基于异层渲染的原生组件, 请注意原生组件使用限制。 属性说明 属性名类型默认值必填说明modestringnormal否应用模式,只在初始化时有效&#xff…

UI设计(资源)

免费字体:https://www.mianfeiziti.com/fonts-town23linesw00bo 花瓣(素材):https://huaban.com/ 加载图标:https://loading.io/ 可视化规范:https://www.zcool.com.cn/work/ZMzk1ODU2NjA.html 阿里矢量图标库:htt…

表的增删改查 进阶(二)

🎥 个人主页:Dikz12🔥个人专栏:MySql📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 3.新增 4.查询 聚合查询 聚合函数 GROUP BY子句 HA…

shell编程学习

学习目标: 一周掌握 shell编程 变量的高级用法 变量替换 ##变量替换(贪婪,从前往后匹配,匹配到进行删除) test1I love you,you love me echo $test1 handletest1${test1##*ov} echo $handletest1##变量替换&#xff…

C#,入门教程(07)——软件项目的源文件与目录结构

上一篇: C#,入门教程(06)——解决方案资源管理器,代码文件与文件夹的管理工具https://blog.csdn.net/beijinghorn/article/details/124895033 创建新的 C# 项目后, Visual Studio 会自动创建一系列的目录与文件。 程序员后面的工…

使用 Kali Linux Hydra 工具进行攻击测试和警报生成

一、Hydra 工具和 Kali Linux 简介 在网络安全领域中,渗透测试是评估系统密码强度的重要组成部分。Hydra 是一款由黑客组织“The Hackers Choice”开发的开源登录破解工具,支持50多种协议。本教程将探索如何将 Hydra 与 Kali Linux 结合使用&#xff0c…

Android.mk和Android.bp的区别和转换详解

Android.mk和Android.bp的区别和转换详解 文章目录 Android.mk和Android.bp的区别和转换详解一、前言二、Android.mk和Android.bp的联系三、Android.mk和Android.bp的区别1、语法:2、灵活性:3、版本兼容性:4、向后兼容性:5、编译区…

新上线一个IT公司微信小程序

项目介绍 项目背景: 一家IT公司,业务包含以下六大块: 1、IT设备回收 2、IT设备租赁 3、IT设备销售 4、IT设备维修 5、IT外包 6、IT软件开发 通过小程序,提供在线下单,在线制单,在线销售,业务介绍,推广,会员 项目目的: 业务介绍: 包含企业业务介绍 客户需…

C语言栈实现就近匹配原则

//main.c #include<stdio.h> #include"linklist.h" #include"LinkStack.h" #include<string.h> #include<stdlib.h> int main_1(void) {int i 0;int arr[10];LinkStack* stack NULL;//创建栈stack SeqStack_Create();/*判断栈创建的是…

万字讲解新一代分布式任务调度框架Power-job

1、简介 Power-Job 的设计目标是成为企业级的分布式任务调度平台&#xff0c;整个公司统一部署调度中心 power-job-server&#xff0c;旗下所有业务线应用只需要依赖 power-job-worker 即可接入调度中心获取任务调度与分布式计算能力。 Power-job官方网址&#xff1a;http:/…

链动2+1模式:月流水6000万是怎么做到的?

一个好的企业往往只需要最简单的营销方式。当我们面对当今的商业市场&#xff0c;琳琅满目的商业模式&#xff0c;应接不暇的营销方案&#xff0c;我们一定会举足无措的不知道怎么选择。因为一个好的公司或企业&#xff0c;一定要有一个十分经得起推敲的模式来面对消费者。 那么…

失眠了,感谢技术人对“Spring Cloud Alibaba实战派的支持”

笔者从2015年开始接触Spring Boot&#xff0c;2017年开始接触Spring Cloud&#xff0c;到现在的Spring Cloud Alibaba已经整整快7个年头了&#xff0c;从2012年开始接触Java到现在已经整整10年了。 这里并没有倚老卖老的意思&#xff0c;只是想说作为一个纯碎的技术人&#xf…

Gin 框架之Cookie与Session

文章目录 一、Cookie和Session的由来二、Cookie简介1. 什么是Cookie2. Cookie规范3. 安全性4. Cookie 关键配置 三、Session简介1. 什么是Session2. Session 安全性3. 如何让客户端携带 sess_id 四、使用 Gin 的 Session 插件4.1 介绍4.2 基本使用 五、 session与store5.1 会话…

「优选算法刷题」:找到字符串中所有字母异位词

一、题目 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 输入: s "cbaebabacd", …

LeetCode刷题——55. 跳跃游戏(HOT100)

✊✊✊&#x1f308;大家好&#xff01;本篇文章将较详细介绍贪心相关的题目55. 跳跃游戏&#xff0c;提供两种解法。代码语言为&#xff1a;C代码&#x1f607;。 &#x1f3a1;导航小助手&#x1f3a1; 55. 跳跃游戏&#x1f512;1、题目&#xff1a;☀️2、解法一&#xff1…

Win10 打开文件突然鼠标变成一个蓝色大圈卡住点不了也打不开文件,重启电脑也是这样

环境: Win10 专业版 加密客户端环境 问题描述: Win10 打开桌面word文件突然鼠标变成一个蓝色大圈卡住点不了也打不开文件,重启电脑也是这样,只有蓝色圈变大没有鼠标指针出现圈卡着不会动,和那些有鼠标箭头加小蓝色圈不一样 解决方案: 某网上查看的,还是要自己排查…

linux 更新镜像源

打开终端&#xff0c;备份一下旧的 源 文件&#xff0c;以防万一 cd /etc/apt/ ls sudo cp sources.list sources.list.bak ls然后打开清华大学开源软件镜像站 搜索一下你的linux发行版本&#xff0c;我这里是ubuntu发行版本 点击这个上面图中的问号 查看一下自己的版本号&a…

MySQL复合查询解析

&#x1f388;行百里者半九十&#x1f388; &#x1f388;目录&#x1f388; 概念多表查询自连接子查询单行子查询多行子查询in关键字all关键字any关键字 多列子查询在from中使用子查询合并查询unionunion all 总结 概念 之前我们很多的查询都只是对于单表进行查询&#xff0c…

飞书修改不了名称?飞书如何修改名称,修改昵称

飞书如何修改名称 点击编辑信息 在这里修改姓名就可以啦

Day31 46全排列 47全排列II 回溯去重tips 51N皇后 37解数独

46 全排列 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 排列问题与组合问题的不同之处就在于&#xff0c;没有startIndex&#xff0c;同时需要设置一个used数组…