1 拉取并运行镜像
从docker hub 拉取镜像,以ubuntu20.04为例:
docker pull ubuntu:20.04
docker run -it ubuntu:20.04 /bin/bash
发现命令行变为root@1234abcd5678:,这样就是进入docker容器里了。以下是docker常用的命令:
# 以下均为在宿主机上使用的命令,不要在容器里使用
docker pull image_name:v1.0 #下载名为image_name:v1.0的镜像
docker images #查看所有镜像
docker run -it image_name:v1.0 #把名为image_name:v1.0的镜像运行,成为一个容器
docker ps -a #查看所有容器
docker start -i 1234abcd5678 #启动ID为1234abcd5678的容器
docker cp ./abc.txt 1234abcd5678:/root/ #把当前路径下的abc.txt拷贝到容器1234abcd5678的/root/目录下
docker rm 1234abcd5678 #删除ID为1234abcd5678的容器
docker rmi image_name:v1.0 #删除名为image_name:v1.0的镜像
docker commit 1234abcd5678 image_name:v2.0 #把ID为1234abcd5678的容器打包成名为image_name:v2.0的镜像
从docker hub下载的Ubuntu20.04镜像只有几十兆(72.8M),基本什么都没安装,所有环境都从头安装。
换源加速
docker cp ./sources.list f5d3f2b62974:/etc/apt/
文件sources.list
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
2 安装Python3
Ubuntu20.04发行版是默认安装python3.8的(但拉取下来的镜像中并没有),想换版本的可以跟着此步骤编译安装,已经有Python且不想换版本的忽略此步。
一、首先安装一些依赖,有权限问题的记得在apt前面加sudo,docker里面默认是root用户,所以不需要sudo:
apt update
apt install -y pkg-config
apt install -y wget
apt install -y gcc
apt install -y vim
#apt install -y software-properties-common
#apt install -y kmod
#apt install -y git
#apt install -y unzip
(可选)如果想编译python所有的可选模块,也安装一下下面这些依赖:
apt install -y wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev lzma lzma-dev uuid-dev libncurses5-dev libreadline6-dev libgdbm-compat-dev liblzma-dev gdb lcov
二、下载Python源码安装包并解压,别的版本自己替换网址。
下载地址https://www.python.org/ftp/python。
wget https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tar.xz
下载太慢,通过命令写到容器中
docker cp ./Python-3.9.12.tar.xz f5d3f2b62974:/
tar -xf Python-3.9.12.tar.xz
cd Python-3.9.12
三、编译安装
./configure --enable-optimizations --prefix=/usr/local/mypython3912
make
make install
其中–prefix选项是配置安装的路径,若是不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。
若是配置–prefix,如:./configure --prefix=/usr/local/test能够把全部资源文件放在/usr/local/test的路径中,不会杂乱。
用了—prefix选项的另外一个好处是卸载软件或移植软件。当某个安装的软件再也不须要时,只须简单的删除该安装目录,就能够把软件卸载得干干净净;移植软件只需拷贝整个目录到另一个机器便可(相同的操作系统)。
四、设置软连接
ln -s /usr/local/mypython3912/bin/python3.9 /usr/bin/python3
#为 pip 设置软链接
ln -s /usr/local/mypython3912/bin/pip3.9 /usr/bin/pip3
3 容器打包为镜像
#把ID为1234abcd5678的容器打包成名为image_name:v2.0的镜像
docker commit 1234abcd5678 image_name:v2.0
docker commit f5d3f2b62974 mypython3912:v1.0
大小(1.08G)