1 准备
(1) Dockerfile文件
内容如下:
From centos:7.5.1804
# Install some basic utilities
# Create a working directory
RUN mkdir /app
#WORKDIR /app
# Create a non-root user and switch to it
#RUN adduser --disabled-password --gecos '' --shell /bin/bash user \
# && chown -R user:user /app
#RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
#USER user
# 复制宿主机中的anaconda 到 镜像
COPY Anaconda3-5.2.0-Linux-x86_64.sh /app/
#RUN bash /app/anaconda.sh -b -p /data
# 复制宿主机中的python代码到 镜像
COPY -r python_project /app/
EXPOSE 80
(2)anaconda安装包: Anaconda3-5.2.0-Linux-x86_64.sh (对应python3.6.5)
(3)python 工程代码:python_project
2、根据dockerfile文件创建镜像
在新服务器命令行输入:
[root@localhost ~]# docker build -t vesoft/centos7-anaconda3 .
命令行输入 docker images 即可看到新创建的镜像
3、启动镜像为容器
[root@localhost ~]# docker run -itd --privileged=true -p 50022:22 --name centos7-anaconda3 vesoft/centos7-anaconda3 /usr/sbin/init
-p 为指定端口
-d 后台运行
–name 命名容器
–privileged 使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
vesoft/centos7-anaconda3 为镜像名
4、容器内安装anaconda并进行环境变量配置
进入容器内部
[root@localhost ~]# docker exec -it 472e1bfce19a bash
安装anaconda
[root@b6925da68659 app]# sh Anaconda3-5.2.0-Linux-x86_64.sh
一路回车向下,在需要输入的地方,输入yes(除了最后一个,问是否安装vscode 编辑器)
若出现错误,提示找不到bunzip2:
Anaconda3-5.2.0-Linux-x86_64.sh: line 353: bunzip2: command not found
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
安装bunzip2
[root@b6925da68659 app]# yum install -y bzip2
测试conda是否加入环境变量
[root@b6925da68659 app]# conda -V
若提示没有 conda 命令,自行配置环境变量
编辑profile文件
[root@b6925da68659 app]# vi /etc/profile
在文件最后加入如下语句(路径需要根据自己的安装位置更改):
PATH=$PATH:/root/anaconda3/bin
export PATH
保存后,刷新环境变量
[root@b6925da68659 app]# source /etc/profile
[root@b6925da68659 app]# source ~/.bashrc
5、其他需要安装的
服务命令安装(service):
[root@b6925da68659 app]# yum install -y initscripts
gcc , gcc-c++安装(安装编译python库的时候会用到)
[root@b6925da68659 app]# yum -y install gcc gcc-c++
contab 安装
[root@b6925da68659 app]# yum install crontabs
6、用ssh登录docker
1、安装openssh
[root@b6925da68659 app]# yum install -y openssh-server
[root@b6925da68659 app]# yum -y install openssh-clients
2、设置root密码:
>[root@b6925da68659 app]# passwd #如果没有该命令 使用yum install passwd安装
Changing password for user root.
New password: #设置新密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #确认新密码
passwd: all authentication tokens updated successfully.
3、vim /etc/ssh/sshd_config,修改下面配置,使得可以直接使用root登录:
1)添加PermitRootLogin yes
2)添加UsePAM no
4、启动ssh服务,并设置开机自启动
[root@b6925da68659 app]# service sshd restart
[root@b6925da68659 app]# chkconfig sshd on
注意:
执行service sshd restart可能会报错:Failed to get D-Bus connection: No such file or directory
此时尝试用systemctl命令都会报此错误
先执行 /usr/bin/sshd -D,出现如下错误
进行下面配置:
[root@b6925da68659 app]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ‘’
[root@b6925da68659 app]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ‘’
[root@b6925da68659 app]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ‘’
重新启动 ssh
[root@b6925da68659 app]# /usr/sbin/sshd -D &
5、测试
测试1:
exit退出docker,输入docker ps -a,查看docker的ID
打开一个新终端,通过ssh root@xxx.xx.xx.xx -p 50022 进入docker
测试2:
直接配置在xshell中新设置一个会话,添加加我们之前设置的端口号(50022),登录进入也行。
7、python工程依赖包安装
见其他博客
8、容器保存为一个新的镜像,以便以后基于该镜像启动
[root@localhost ~]# docker commit -m “centos7-anaconda3” b6925da68659 centos7-anaconda3:v1
b6925da68659 :容器id
centos7-anaconda3:目标镜像的仓库名
v1:tag
9、镜像本地化保存
将镜像 centos7-anaconda3:v1 生成 centos7anaconda3.tar 文档,存于当前目录
[root@localhost ~]# docker save -o centos7anaconda3.tar centos7-anaconda3:v1
然后在其他服务器载入镜像:
[root@localhost ~]# docker load < centos7anaconda3.tar
注:本博客参考: https://blog.csdn.net/hpf247/article/details/80078240