使用Docker制作一个CentOS7容器并安装python3
1.下载centos镜像
docker pull centos:7
2.创建并启动容器
docker run -d --name centos7 --privileged=true -p 10022:22 -p 10080:80 -h testhost -v /home/fd/container/centos7:/home/centos7 centos:7 /usr/sbin/init
参数说明:
-d 后台运行方式
–-name 创建的容器名,方便启动、关闭、重启、删除容器等操作
–privileged=true 加上之后容器内部权限更多,不会出现权限问题
-p 10022:22 -p 10080:80 指定端口映射,可同时放通多个端口
-h testhost 指定容器主机名
-v /home/fd/container/centos7:/home/centos7 宿主机目录映射到容器内部目录
centos:7 本地centos镜像版本/或者镜像id
/usr/sbin/init 启动方式
3.进入容器
docker exec -it centos7 /bin/bash
4.在容器内部操作
先初始化 yum
yum update
安装 net-tools
yum -y install net-tools
查看网络测试
ifconfig
安装 vim 编辑器
yum -y install vim
安装 wget 下载使用
yum -y install wget
配置容器 yum更新源为国内ali yum源
此处也写一下,创建一个备份目录,把之前的 repo 移动到备份目录先备份下
cd /etc/yum.repo.d/
mkdir repos.bak
mv CentOS-* ./repos.bak/
然后如果容器内部能够连上网络,那就一条命令
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
如果容器内部连不上网络,那就如下操作
vim CentOS-Base-ali.repo
# 按照下面的格式来,建议直接CV
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
换完yum更新源,一定要执行
yum clean all
yum makecache # 也可以是 yum makecache fast ,更快一些
yum update
然后安装基本软件
yum -y install systemd && \
yum -y install firewalld && \
yum -y install openssh openssh-server openssh-clients &&\
yum install -y iproute
5.在容器内安装python3
5.1.不要删除自带的python2.7,否则会出问题,因为centos许多软件需要依赖系统自带python
5.2.安装依赖工具 (安装这些模块都是为了成功编译安装python3,防止出现各种异常)
yum install -y make wget yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel mysql-devel gcc gcc-devel python-devel
5.3.下载
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
5.4.解压
tar -zxvf Python-3.6.5.tgz
5.5.移动至规范的放软件的目录下
mv Python-3.6.5 /usr/local
5.6.安装
cd /usr/local/Python-3.6.5/
./configure
make
make install
注意:./configure命令没有指定安装路径,则默认安装在/usr/local/bin,如果指定安装路径,则命令为./configure --prefix=/usr/local/python3。
如果这里指定安装路径的话,安装完成后,不能直接使用python3启动,需要创建软连接。
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 创建软连接
ls -l /usr/bin/python3 # 查看创建软连接
同理,需要创建pip3的软连接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 # 创建软连接
ls -l /usr/bin/pip3 # 查看创建软连接
6.打包容器
打包容器成镜像
docker commit -a "edwin" -m "Centos7.6 platform for building and running Python 3.8 applications" -p 95096da60a6e username/centos7.6-python3.8:1.0.0 #命令中的 username 请替换为你的 Docker 账号用户名
参数说明
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
7.上传到镜像公共仓库
7.1.上传到镜像公共仓库前提,需要先登陆:
docker login
输入用户名与密码登陆。
7.2.推送到公共仓库
docker push username/centos7.6-python3.8 # 推送到公共仓库