Docker系列003-在Docker中安装Centos镜像

本人微信公众号,欢迎扫码关注!

环境准备

  • centos 7
  • 已安装Docker

Centos镜像下载安装

步骤

1
2
3
4
5
# 从镜像仓库拉取centos镜像
docker pull docker.io/centos

# 查看本地镜像
docker image ls

运行一个centos容器

1
docker run -it --name centosTest --privileged=true -v /opt/software/:/opt/software/ -p 9908:8080 docker.io/centos /sbin/init

命令解释

  • -it:控制台交互,支持终端登录
  • --name centosTest:对容器命名
  • --privileged=true:大约在0.6版,privileged被引入docker,使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限,privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。
  • -v /opt/software/:/opt/software/:给容器挂载存储卷,挂载到容器的某个目录,将本地的/opt/software/目录挂载到容器中centos的/opt/software/目录下。
  • -p 9908:8080:容器端口映射,将容器中的8080端口映射到本地9908端口,注意:使用-p参数进行的端口映射,会自动在iptables中建立规则,绕过firewalld,有些情况下这对于端口级的黑白名单控制管理是很不利的,所以我们需要对iptables进行手动修改,详见https://www.cnblogs.com/qjfoidnh/p/11567309.html
  • docker.io/centos:使用哪个镜像
  • /sbin/init:初始化

查看是否启动成功

1
docker ps

进入某个容器中

1
docker exec -it centosTest /bin/bash

命令执行成功后,命令行会变成如:[root@3583b13c3b3e /]#模式,说明已经成功进入我们启动的容器中了。

常用命令执行报错问题

  • 执行ifconfig命令报错:执行后出现bash: ifconfig: command not found错误提示。
    使用docker pull centos命令下载下来的centos镜像是centos7的最小安装包,里面并没有携带ifconfig命令,所以我们要知道ifconfig命令在哪个工具包下,然后我们安装该工具包,该命令自然就可以使用了。
    1
    2
    # 查看命令详细信息
    yum provides ifconfig

由上图我们得知,ifconfig命令在net-tools这个工具包下,然后我们使用yum install net-tools命令安卓即可,效果如下图。

  • 执行ll命令报错:执行后会出现bash: ll: command not found错误提示。
    首先我们应该知道,llls -l的简写方式,而错误提示说该命令没找到,其实是因为bashrc文件中没有该命令的配置,所以我们配置上就好了。
    1
    2
    3
    4
    5
    6
    7
    8
    # 对.bashrc配置文件进行编辑
    vi ~/.bashrc

    # 插入我们要的命令
    alias ll='ls -lrt'

    # 保存退出,然后千万别忘了刷新配置,不然没反应
    source ~/.bashrc

其他命令失效的错误,解决思路大多与上面这两种类似,因为使用docker pull centos命令下载下来的centos镜像是centos7的最小安装包,所以部分配置或命令是没有的。

-------------本文结束感谢您的阅读-------------