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 # 推送到公共倉庫