本人微信公众号,欢迎扫码关注!
环境准备
- 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.htmldocker.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
错误提示。
首先我们应该知道,ll
是ls -l
的简写方式,而错误提示说该命令没找到,其实是因为bashrc
文件中没有该命令的配置,所以我们配置上就好了。1
2
3
4
5
6
7
8# 对.bashrc配置文件进行编辑
vi ~/.bashrc
# 插入我们要的命令
alias ll='ls -lrt'
# 保存退出,然后千万别忘了刷新配置,不然没反应
source ~/.bashrc
其他命令失效的错误,解决思路大多与上面这两种类似,因为使用docker pull centos
命令下载下来的centos镜像是centos7的最小安装包,所以部分配置或命令是没有的。