docker之centos7容器常用命令和服务安装

一、前言

  以前我们如果想在windows环境下使用linux系统,最早的是一台主机上安装双机系统,再后来我们有了VMware,可以通过workstations虚拟化平台安装虚拟机。现在我们还可以通过docker安装linux容器,容器更轻量也更便捷。不过凡事都是两面性的,因为容器的轻量,所以linux虚拟机默认就有的很多服务和命令都是没有的。我们以centos7容器为例介绍centos7容器常用命令和服务的安装。我们首先拉取一个centos7最新版镜像文件并启动容器。

#拉取centos7镜像
[root@test ~]# docker pull centos:centos7
#创建centos7容器,run表示运行一个容器,-itd表示后台运行,–name设置容器名称,–restart=always表示容器随docker服务自启动
[root@test ~]# docker run -itd --name centos7 --restart=always centos:centos7 /usr/sbin/init
#登录容器
[root@test ~]# docker exec -it centos7 /bin/bash

二、centos7容器常用命令安装

1、ip命令安装

#安装命令前
[root@4167e92716bf /]# ip addr
bash: ip: command not found
#安装命令软件包
[root@4167e92716bf /]# yum install -y iproute
#安装命令后
[root@4167e92716bf /]# ip addr

inet 172.17.0.3/16 scope global eth0

2、netstat命令安装

  netstat、route、ifconfig等命令都是net-tools工具包里的命令。

#安装命令前
[root@4167e92716bf /]# netstat -tnpl
bash: netstat: command not found
#安装命令软件包
[root@4167e92716bf /]# yum install -y net-tools
#安装命令后
[root@4167e92716bf /]# netstat -tnpl

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 149/sshd

3、vim命令安装

[root@4167e92716bf /]# yum install -y vim

4、其他命令安装

  linux环境下命令安装相对简单,找不到的命令我们通过yum安装即可,有些命令软件包就是命令名称,有些是合集,通过百度查找到对应软件包名进行安装即可。

[root@4167e92716bf /]# yum install -y wget

三、centos7容器常用服务安装

1、sshd服务安装

  centos7容器默认没有安装和启动ssh服务的,如果我们希望远程登录容器,则需要安装并配置启动sshd服务。结合容器随docker服务启动,就可以实现远程连接docker了。

#安装sshd服务
[root@4167e92716bf /]# yum install -y openssh-server
#启动sshd服务
[root@4167e92716bf /]# systemctl start sshd
#设置开机自启动
[root@4167e92716bf /]# systemctl enable sshd

2、创建用户

  直接创建的centos7容器,默认是没有创建用户的,如果我们想要远程管理,还需要创建用户,用于登录验证。

[root@4167e92716bf /]# useradd wuhs
[root@4167e92716bf /]# passwd wuhs
Changing password for user wuhs.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

3、安装ssh客户端

  安装sshd服务只是用于远程管理,如果想从容器远程其他主机则需要安装ssh客户端。

[root@4167e92716bf /]# yum install -y openssh-clients

4、安装vsftpd服务

  直接yum安装vsftpd服务,通过systemctl管理服务启停。

[root@4167e92716bf /]# yum install -y vsftpd

5、安装httpd服务

  直接yum安装httpd服务,通过systemctl管理服务启停。

[root@4167e92716bf /]# yum install -y httpd

6、安装其他服务

  如果是yum安装的服务,我们可以自己安装;如果是linux环境下按步骤部署的我们也可以像虚拟机环境下一样正常部署安装。

[root@4167e92716bf local]# yum install -y lrzsz
[root@4167e92716bf local]# source /etc/profile
[root@4167e92716bf local]# java -version
java version “1.8.0_291”
Java™ SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot™ 64-Bit Server VM (build 25.291-b10, mixed mode)

四、QA

1、启动sshd服务的时候报错

  • 报错信息:Failed to get D-Bus connection: Operation not permitted
  • 报错原因:创建容器的时候未启用
  • 解决方案一:在创建CentOS 7容器时,使用"/usr/sbin/init"参数,容器会启动systemd作为其初始化进程,从而使容器能够像一个完整的操作系统一样运行,并能够管理和启动其他服务和进程。这个时候使用systemctl start sshd方式启动进程。
  • 解决方案二:使用sshd命令直接启动服务

[root@22ba481dca87 ssh]# /usr/sbin/sshd -D &

2、sshd命令启动服务的时候报错

  • 报错信息:Could not load host key: /etc/ssh/ssh_host_rsa_key…sshd: no hostkeys available – exiting.
  • 报错原因:缺少ssh的主机密钥文件
  • 解决方案:重新生成所有缺失的主机密钥文件,然后启动

[root@22ba481dca87 ssh]# ssh-keygen -A
ssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519
[root@22ba481dca87 ssh]# /usr/sbin/sshd -D &

五、已启动容器添加映射端口

  凡事有利有弊,docker容器轻量便捷了,但是如果新部署了服务,监听了端口,并不能直接访问,需要进行端口映射。我们可以启动前先对考虑可能部署的服务做地址映射,但是计划赶不上变化总会存在需要后续增加的情况,这个时候就需要对已启动容器新增端口映射。

1、创建容器的时候指定端口映射

  新建容器的时候添加端口映射比较简单,使用-p host_port:docker_port参数指定映射关系即可,host_port表示主机上监听的端口,docker_port表示容器内部监听的端口。如果主机上启用了防火墙,我们还需要在防火墙上开通策略才可以实现远程访问。

[root@test ~]# docker run -itd -p 2222:22 --name centos7 --restart=always centos:centos7 /usr/sbin/init
5b420aeb7f2f907f3066c178c6c96b276b6f4bda9e0a9e228a9dcd4a4133d32c
在这里插入图片描述

2、已运行容器添加端口映射

  • 如果是已运行容器添加端口映射就比较麻烦些,停止docker,修改配置,然后重新启动docker服务和容器。需要修改config.v2.json、hostconfig.json配置文件增加端口映射。
    在这里插入图片描述

  • 对于已运行的容器,我们可能已经忘了容器存储的元数据目录名称(就是这一串哈希),我们可以查看每个哈希值目录下的hostname文件,以此确定对于需要修改的容器。实际上这一串哈希值的前10个字符就是容器的container id。
    在这里插入图片描述

  • 停止容器和docker服务,记得修改配置文件前一定要先停止docker服务,否则修改重启docker后会导致配置文件被默认配置覆盖。

(base) [root@test 3e4353876ab3716a1c83a7b62abfab26ef6db89f13254518a5250073f1d3105c]# docker stop centos7
(base) [root@test 3e4353876ab3716a1c83a7b62abfab26ef6db89f13254518a5250073f1d3105c]# systemctl stop docker

  • 配置文件是json格式,我们可以使用jq清晰查看内容,使用vim命令编辑json文件,编辑配置文件,参照现有格式添加端口映射内容。直接编辑不方便,当然我们也可以下载json文件到本地用工具编辑后上传。
(base) [root@test 3e4353876ab3716a1c83a7b62abfab26ef6db89f13254518a5250073f1d3105c]# jq '.' hostconfig.json 
{
..."NetworkMode": "default","PortBindings": {"22/tcp": [{"HostIp": "","HostPort": "2222"}]},...(base) [root@test 3e4353876ab3716a1c83a7b62abfab26ef6db89f13254518a5250073f1d3105c]# jq '.' config.v2.json ..."ExposedPorts": {"22/tcp": {}},..."Ports": {"22/tcp": [{"HostIp": "0.0.0.0","HostPort": "2222"}]},...

在这里插入图片描述- 验证json文件格式,配置修改完成后使用python -m json.tool工具校验配置是否正确,如果配置有误则会报错,如果格式正确则会输出显示文件内容。

(base) [root@test 3e4353876ab3716a1c83a7b62abfab26ef6db89f13254518a5250073f1d3105c]# python -m json.tool hostconfig.json

  • 验证配置文件无误以后,重新启动docker服务并检查监听端口和映射关系。
    在这里插入图片描述

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

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

相关文章

SpringCloud-高级篇(二十一)

前面解决了消息的可靠性、消息的延迟问题,下面研究一下消息的堆积的问题: (1)消息堆积问题 消息产生堆积,上限后,最早的消息成为死信,有消息被丢弃,这对安全性较高的业务中是不行的…

HiveSQL——条件判断语句嵌套windows子句的应用

注:参考文章: SQL条件判断语句嵌套window子句的应用【易错点】--HiveSql面试题25_sql剁成嵌套判断-CSDN博客文章浏览阅读920次,点赞4次,收藏4次。0 需求分析需求:表如下user_idgood_namegoods_typerk1hadoop1011hive1…

JAVA设计模式之迭代器模式详解

迭代器模式 1 迭代器模式介绍 迭代器模式是我们学习一个设计时很少用到的、但编码实现时却经常使用到的行为型设计模式。在绝大多数编程语言中,迭代器已经成为一个基础的类库,直接用来遍历集合对象。在平时开发中,我们更多的是直接使用它&a…

解决 postman测试接口报404 Not Found

JDK版本:jdk17 IDEA版本:IntelliJ IDEA 2022.1.3 文章目录 问题描述原因分析解决方案 问题描述 当我使用postman测试接口时,报了 404 Not Found 的错误,报错截图如下所示 但我的后端程序中已经定义了该接口,如下所示 …

C语言指针2.0

1. 指针语法解剖 任意的指针,不管有多复杂,其定义都由两部分组成。 第1部分:指针所指向的数据类型,可以是任意的类型第2部分:指针的名字 char (*p1); // 第2部分:*p1; 第1部分:ch…

分享76个时间日期JS特效,总有一款适合您

分享76个时间日期JS特效,总有一款适合您 76个时间日期JS特效下载链接:https://pan.baidu.com/s/1s7tPGT_ItK7dNK5_qbZkug?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,…

单片机——FLASH(2)

文章目录 flash (stm32f40x 41x的内存映射中区域详解)flash写数据时 flash (stm32f40x 41x的内存映射中区域详解) Main memory 主存储区 放置代码和常数 System memory 系统存储区 方式bootloader代码 OTP区 一次性可编程区 选项…

解决Typora导出HTML不显示图片

解决Typora导出HTML不显示图片 产生原因 Typora导出HTML不显示图片,可能时图片存放在我们的硬盘中。 我们可以将markdown中的图片转化为base64格式,嵌入到html中。 解决步骤 首先,下载 TyporaToBase64.jar 密码:45jq 其次,将…

Netty应用(五) 之 Netty引入 EventLoop

目录 第三章 Netty 1.什么是Netty? 2.为什么需要使用Netty? 3.Netty的发展历程 4.谁在使用Netty? 5.为什么上述这些分布式产品都使用Netty? 6.第一个Netty应用 7.如何理解Netty是NIO的封装 8.logback日志使用的加强 9.Ev…

无人机飞行原理,多旋翼无人机飞行原理详解

多旋翼无人机升空飞行的首要条件是动力,有了动力才能驱动旋粪旋转,才能产生克服重力所必需的升力。使旋翼产生升力,进而推动多旋翼无人机升空飞行的一套设备装置称为动力装置,包括多旋翼无人机的发动机以及保证发动机正常工作所必…

知识价值2-什么是IDE?新手用哪个IDE比较好?

IDE是集成开发环境(Integrated Development Environment)的缩写,是一种软件应用程序,旨在提供集成的工具集,以方便开发人员进行软件开发。IDE通常包括代码编辑器、编译器、调试器和其他工具,以支持软件开发…

【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目

作者推荐 视频算法专题 本博文涉及知识点 深度优先搜索 树 图论 分类讨论 LeetCode2973. 树中每个节点放置的金币数目 给你一棵 n 个节点的 无向 树,节点编号为 0 到 n - 1 ,树的根节点在节点 0 处。同时给你一个长度为 n - 1 的二维整数数组 edges…

C++2024寒假J312实战班2.5

题目列表: #1多项式输出 #2龙虎斗 #3表达式求值 #4解密 #1多项式输出 这是第一个题目很简单,我也作对了。 我们下来看一下题目: 我们先来看一下样例: 5 100 -1 1 -3 0 10 首先100是第一项,所以不输出加号&…

【单片机】简单的自定义延时程序设计(代码演示)

前言 大家好吖,欢迎来到 YY 滴 单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY…

【Linux】信号保存与信号捕捉处理

信号保存与信号捕捉 一、信号保存1. 信号的发送2. 理解信号保存(1)信号保存原因(2)信号保存概念 3. 信号保存系统接口(1)sigset_t(2)sigprocmask()(3)sigpend…

论文阅读-GROUP:一种聚焦于工作负载组行为的端到端多步预测方法

摘要 准确地预测工作负载可以使网络服务提供商实现应用程序的主动运行管理,确保服务质量和成本效益。对于云原生应用程序来说,多个容器协同处理用户请求,导致每个容器的工作负载变化受到工作负载组行为的影响。然而,现有方法主要…

【Android】使用Termux终端搭建本地web服务器

在Android手机上有一个Termux APP,可运行类似 Linux 终端的模拟器,可以运行Nodejs,正好用它运行本地站点,用不着去租服务器,相比运行在电脑上,节省了电费,想要学来用的话不妨看看这篇文章。 文章…

案例:CentOS8 在 MySQL8.0 实现半同步复制

异步复制 MySQL 默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主节点如果 crash 掉了,此时主节点上已经提交的事务可能并没有传…

Python:解析获取连续的重叠对pairwise

简介:pairwise函数,返回从输入迭代器获取的重叠对的迭代器,是Python 3.10 新特性,表示一个迭代器从对象中获取连续的重叠对,在某些场景中可以优化代码运行效率。pairwise 函数是一种用于处理列表中元素之间配对操作的通…

【Langchain Agent研究】SalesGPT项目介绍(二)

【Langchain Agent研究】SalesGPT项目介绍(一)-CSDN博客 上节课,我们介绍了SalesGPT他的业务流程和技术架构,这节课,我们来关注一下他的项目整体结构、poetry工具和一些工程项目相关的设计。 项目整体结构介绍 我们把…