通过Docker创建CentOS容器

2023-11-13

前言

先安装Docker,使用文内的脚本可以快速创建CentOS 7.8虚拟系统集群,并通过SSH(Secure Shell)远程工具连接。

创建桥接网络,方便容器间通信

指令格式为docker network create <网络名称 >

docker network create test-network
复制代码

列出Docker下所有网络可以看到test-network。

docker network ls
复制代码

通过CentOS 7镜像创建容器

运行docker run使用阿里云镜像仓库拉取打包好的CentOS 7中文版镜(在centos:7.8.2003 镜像基础上添加了JDK8、 vim、lsof、wget、tree、python-devel、c 编译环境、SSH)像创建CentOS 7容器,系统用户名、密码分别为root和666666。

同一个主机下创建多个容器需要定义新的容器名(--name node2)、网络别名(--network-alias node2)、容器hostname(-h node2)、挂载到容器的目录名(-v /root/docker/node2:/root/share)以及映射的端口(-p 30003:22 -p 30004:80)。

docker run \
--name node1 \
--network test-network \
--network-alias node1 \
--privileged=true \
-h node1 \
-dit \
-m 1500M \
-w ~/ \
-v /root/docker/node1:/root/share \
-p 30001:22 \
-p 30002:80 \
registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1 \
/usr/sbin/init
复制代码

命令中每个参数解释:

# docker run \
# --name node1 \ 指定容器名为node1
# --network test-network \ 使用名为test-network的网络
# --network-alias node1 \ 指定网络别名为node1,相当于域名
# --privileged=true \ 指定是特权容器,拥有完整root权限
# -h node1 \ 指定hostname
# -dit \ 相当于后台运行容器(-d)、以交互模式运行容器(-i)、为容器重新分配一个伪输入终端(-t),-i和-t一般同时使用
# -m 1500M \ 限制容器使用内存上限1500兆
# -w ~/ \ 工作目录、进入容器后目录为当前用户目录
# -v /root/docker/node1:/root 将宿主机/root/docker/node1目录挂载到容器/root/share目录,目录下内容可以互相看到
# -p 30001:22 \ 宿主机30001端口映射为容器22端口,通过宿主机30001端口相当于访问容器22端口
# -p 30002:80 \
# registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1 \ 使用镜像仓库以及标签/版本号
# /usr/sbin/init \ 容器启动后执行这个指令来准备软件执行的环境,包括系统的主机名、网络设定、语言、文件系统格式及其他服务的启动等
复制代码

连接容器

  • 宿主机命令行进入容器
# 进入容器
docker exec -it node1 /bin/bash
​
# 退出容器
exit
复制代码
  • 远程连接:通过宿主机IP和端口(映射容器22端口的那个)来访问CentOS 7容器

容器间互相访问

同一网络下,容器通过网络别名(--network-alias)来互相访问。下图中连接到node2容器,在容器内可以ping通node1,网络是通的。

目录挂载问题

如果将宿主机空目录直接挂载到容器/root目录,可能会导致一些问题,比如登录容器系统hostname始终显示-bash-4.2#,而不是我们设置的,如node1。因为/root目录下缺少配置文件,而挂载的宿主机目录又没有。

hostname不正常显示,可以在登录容器后执行下面语句,拷贝默认配置到/root目录,然后重新连接即可显示正常。

cp /etc/skel/.bashrc /root
cp /etc/skel/.bash_profile /root

作者:我有八千部下
链接:https://juejin.cn/post/7218411904700170300
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过Docker创建CentOS容器 的相关文章

随机推荐

  • 运行python脚本时传入参数的几种方式(接收外部参数)

    运行python脚本时传入参数时三种格式对应不同的参数解析方式 分别为sys argv argparse tf app run 前两者是python自带的功能 后者是tensorflow提供的便捷方式 1 sys argv sys模块是很常
  • Q_UNUSED()函数的作用

    Q UNUSED 函数在程序中的作用 就如它所代表的英文一样 unused 即无用的意思 即Q UNUSED 函数在程序中没有实质性的作用 用来避免编译器警告 下面我们来看一组程序 void ColorItem paint QPainter
  • Flutter 环境配置

    Flutter 环境配置 电脑上面安装配置JDK 1 下载安装JDK 下载地址 https www oracle com technetwork java javase downloads jdk8 downloads 2133151 ht
  • 刚拿到esp32-cam想测试该怎么办?看这篇文章就可以了

    无意间对esp32 cam感兴趣 就去某pdd买了一个模块玩玩 组装摄像头的时候不要硬插进去 有个活动卡槽可以扣开 如下图 接下来去arduino官网或者中文社区下载 arduino官网 https www arduino cc en so
  • LeetCode题目笔记——206. 反转链表

    文章目录 题目描述 题目难度 简单 方法一 顺序遍历 C 代码 Python代码 方法二 递归 代码 题目描述 题目难度 简单 方法一 顺序遍历 我们只需顺序遍历一次列表 在原地将它们的指向依次逆转 需要注意的是 当链表本身为空的时候我们直
  • python数据分析-超市客流量高峰期分析--调用matplotlib折线图

    python数据分析 超市客流量高峰期分析 调用matplotlib折线图 数据处理 有一份超市订单csv格式数据源导入后如下 导入需要使用的模块 import pandas as pd import matplotlib pyplot a
  • 6个 Python 办公黑科技,工作效率提升100倍!(附代码)

    下班晚 加班久感觉已经成为现代打工人的通病 每天将大部分时间浪费在一些机械 重复的工作上 如何提升你自己的工作效率才是关键 今天给大家分享6个 Python 办公小技巧 让你的工作效率倍增 欢迎大家学习收藏 喜欢点赞支持 废话不说 让我们开
  • 微信小程序遇到的坑系列---小程序上传图片线上失败

    微信小程序中 上传图片的代码如下 实现功能 1 上传图片到七牛云 2 上传成功后 对于返回的路径展示到页面 3 将返回的路径发送给后端 对于第一个需求 1 上传图片到七牛云 我们需要在七牛云上有一个账号去存自己的图片 于是不能忽略的一步 就
  • 【业务功能篇49】Springboot+EasyPoi 实现Excel 带图片列的导入导出

    SpringBoot整合EasyPoi实现Excel的导入和导出 带图片 51CTO博客 springboot easypoi导出excel
  • JDBC Utils 详解(通俗易懂)

    目录 一 前言 二 JDBCUtils说明 1 背景及起因 2 示意图 3 JDBCUtils类的定义 三 JDBCUtils应用 1 DML的应用 2 DQL的应用 四 总结 一 前言 第三节内容 up主要和大家分享一下JDBC Util
  • 输入权重和偏置的范围问题?

    对于张的单输入单输出的非线性函数 用黄的程序 隐层神经元的个数并没有太大的影响 而输入权重和偏置的范围有很大的影响 隐层神经元数50 InputWeight rand NumberofHiddenNeurons NumberofInputN
  • 龙芯+RT-Thread+LVGL实战笔记(1)——从移植开始

    过去的大半年时间 一直带着学生备战全国职业院校技能大赛 嵌入式系统应用开发 赛项 由于是首次参加该赛项 很多东西都是从0到1的摸索和积累 最后的成绩自然也不甚理想 作为指导教师 备赛期间除了给予学生必要的指导 自己也花了不少精力研究了大赛指
  • 9.7C++作业

    include
  • redis安装过程报错解决方案

    问题一 出现如下错误 cd src make all make 1 Entering directory xx xx redis x x x src CC adlist o bin sh cc command not found make
  • pycharm 安装 markdown 的三种方法! 绝对管用!!!

    Markdown是一种可以使用普通文本编辑器编写的标记语言 通过简单的标记语法 它可以使普通文本内容具有一定的格式 本人使用的是专业版pycharm 自己破解的 不知道正版的有没有安装不上markdown的情况 就个人所遇到的问题解决方案如
  • Spark读取ES报错EsHadoopInvalidRequest The number of slices [1632] is too large

    Spark读取ES报错EsHadoopInvalidRequest The number of slices 1632 is too large 1 背景 最近需要将ES指定索引中的数据使用Spark读取 进行简单处理后写入HBase 使用
  • avalon框架系列-指令(一)

    avalon的指令是一个非常重要的东西 它用来引入一些新的HTML语法 使元素拥有特定的行为 指令一共拥有3种形式 插值表达式 自定义标签 绑定属性 先说说两个比较少的形式 插值表达式和自定义标签 1 插值表达式 跟Vue框架的一样 都是一
  • MATLAB线性回归

    问题陈述 目标是通过使用线性回归技术进行统计推断预测 使用来自论文 1977 Narula and Wellington Prediction Linear Regression and the Minimum Sum of Relativ
  • 【深度学习】Inception的前世今生(四)--Inception V4,Inception-ResNet

    Inception的系列文章 1 Inception v1 Going deeper with convolutions https arxiv org abs 1409 4842 2 Inception v2 Batch Normaliz
  • 通过Docker创建CentOS容器

    前言 先安装Docker 使用文内的脚本可以快速创建CentOS 7 8虚拟系统集群 并通过SSH Secure Shell 远程工具连接 创建桥接网络 方便容器间通信 指令格式为docker network create lt 网络名称