当前位置: 首页 > news >正文

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 设置容器密码

相关文章:

  • 分布式ID(2):雪花算法生成ID
  • GL Logger和CANFDLog-OTL-128两款记录仪都是如何实现高效的报文录制的?
  • 跟着cherno手搓游戏引擎【6】ImGui和ImGui事件
  • MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成
  • OpenHarmony 应用开发入门 (一、环境搭建及第一个Hello World)
  • 数据结构之二叉搜索树
  • 尚硅谷Nginx高级配置笔记
  • 集成开发环境(IDE)介绍
  • 【Vue3】3-2 : 组件的概念及组件的基本使用方式
  • 机器人持续学习基准LIBERO系列6——获取并显示实际深度图
  • 用Python优雅地写出数学表达式的LaTeX代码
  • c# 自定义 滑块TrackBar
  • 树莓派4B +Ubuntu20.04+ROS1的使用(2)
  • 4、python列表Lists
  • Python实现自动化办公(使用第三方库操作Excel)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • git 常用命令
  • JavaScript创建对象的四种方式
  • js继承的实现方法
  • Phpstorm怎样批量删除空行?
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 飞驰在Mesos的涡轮引擎上
  • 基于web的全景—— Pannellum小试
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • # 透过事物看本质的能力怎么培养?
  • $refs 、$nextTic、动态组件、name的使用
  • (Python第六天)文件处理
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .net 发送邮件
  • /run/containerd/containerd.sock connect: connection refused
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • @基于大模型的旅游路线推荐方案
  • [2]十道算法题【Java实现】
  • [20170705]diff比较执行结果的内容.txt
  • [CF482B]Interesting Array
  • [HCIE] IPSec-VPN (手工模式)
  • [hihocoder1395] 最大权闭合子图
  • [IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式
  • [LeetCode] 596:超过5名学生的课
  • [LeetCode] Binary Tree Preorder Traversal 二叉树的先序遍历
  • [leetcode]_Symmetric Tree
  • [Python] Ubuntu12.04LTS
  • [Python进阶] 获取计算机相关信息:Psutil
  • [raspberry pi3] 串口线使用
  • [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作...
  • [Spark][Hive]Hive的命令行客户端启动:
  • [Windows编程] stack overflow != stack buffer overflow
  • [技巧] 如何查看Debian/Ubuntu软件包.deb的内容
  • [技术八卦]放毒记
  • [力扣100] 55.跳跃游戏