ubuntu:16.04下docker 配置anaconda python运行环境、远程ssh连接全解——完美避开docker容器配置的神坑
其实docker容器本身就是一个linux环境的系统,然后用户配置运行环境在里面以供在任何机器上都很方便的使用。
1. Linux下安装docker
首先输入su,进入root模式,然后输入apt-get install docker,出现如下所示的页面则完成了docker的安装。
命令如下:
su
apt-get install docker
具体的执行结果页面如下所示:
sunstrong@ubuntu:~$ su
Password:
root@ubuntu:/home/sunstrong# apt-get install docker
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
docker
0 upgraded, 1 newly installed, 0 to remove and 30 not upgraded.
Need to get 12.2 kB of archives.
After this operation, 65.5 kB of additional disk space will be used.
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu xenial/universe amd64 docker amd64 1.5-1 [12.2 kB]
Fetched 12.2 kB in 0s (129 kB/s)
Selecting previously unselected package docker.
(Reading database ... 221651 files and directories currently installed.)
Preparing to unpack .../docker_1.5-1_amd64.deb ...
Unpacking docker (1.5-1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up docker (1.5-1) ...
2. 创建一个纯净的ubuntu镜像,并启动该镜像作为容器,具体的命令如下:
docker pull ubuntu:16.04
然后输入:
docker images
具体的执行结果页面如下所示:
root@ubuntu:/home/sunstrong# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
anaconda 3.7 ad36c71edc68 2 hours ago 4.6GB
sunstrong/anaconda 3.7 ad36c71edc68 2 hours ago 4.6GB
ubuntu 16.04 9499db781771 2 weeks ago 131MB
pytorch/pytorch latest f8a1d10ae3d7 6 weeks ago 4.65GB
然后是启动该镜像作为一个新的容器,启动容器,并安装ssh,vim,anaconda,wget等。
第一步:启动镜像,命令如下:
docker run -itd --name ubuntu-test ubuntu:16.04 /bin/bash
其中ubuntu-test为容器名,ubuntu:16.04为镜像名
运行结果如下:
root@ubuntu:/home/sunstrong# docker run -itd --name ubuntu-test ubuntu:16.04 /bin/bash
980d1306032ec1e2ee7c6a919d8d87062ca6aeb665e8fd7daf9c4e15bb17c43d
查看正在运行的容器,命令如下:
docker ps -a
这一步运行结果如下:
root@ubuntu:/home/sunstrong# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
980d1306032e ubuntu:16.04 "/bin/bash" 2 minutes ago Up 2 minutes ubuntu-test
586f3a03b62f sunstrong/anaconda:3.7 "/bin/bash" 2 hours ago Up 2 hours 192.168.80.129:8080->22/tcp anaconda37
然后进入容器,命令如下:
docker exec -it 980d1306032e /bin/bash
这一步运行结果如下:
root@980d1306032e:/#
其中root代表容器内部直接是由root权限的,下面开始安装一些必备软件
3.在容器内安装软件
安装wget,ssh,anaconda,vim等,输入命令如下:
apt-get update
apt-get install wget
apt-get install openssh-server
apt-get install vim
其中ssh服务默认非root所以需要改一下文件参数,具体的步骤如下:
vim /etc/ssh/sshd_config
输入i,进行插入,然后找到PermitRootLogin prohibit-password这一行,输入#注释掉,然后添加一行PermitRootLogin yes,最终的文件修改结果如下所示:
#PermitRootLogin prohibit-password
PermitRootLogin yes
然后按esc,再输入:wq,保存该文件并退出
安装Anaconda,命令如下:
wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
具体的执行结果如下所示:
root@980d1306032e:~# wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
--2020-12-11 07:49:10-- https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
Resolving repo.anaconda.com (repo.anaconda.com)... 104.16.131.3, 104.16.130.3, 2606:4700::6810:8303, ...
Connecting to repo.anaconda.com (repo.anaconda.com)|104.16.131.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 530308481 (506M) [application/x-sh]
Saving to: 'Anaconda3-2019.10-Linux-x86_64.sh'
Anaconda3-2019.10-Linux-x86_64 100%[==================================================>] 505.74M 4.43MB/s in 1m 49s
2020-12-11 07:50:59 (4.63 MB/s) - 'Anaconda3-2019.10-Linux-x86_64.sh' saved [530308481/530308481]
然后输入ls
cd ~
ls
结果如下:
root@980d1306032e:~# ls
Anaconda3-2019.10-Linux-x86_64.sh
再输入:
bash Anaconda3-2019.10-Linux-x86_64.sh
此后一直enter就行,然后输入yes,默认原始设置
最后修改环境变量,输入命令如下:
echo 'export PATH="~/anaconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
输入conda list就会发现安装成功了。
4.将容器映射到本地端口
先将容器制作成新镜像,具体的命令如下:
docker commit 980d1306032e new_ubuntu
其中980d1306032e为镜像id,然后再启动容器并映射到本地端口,由于docker容器中ubuntu已经默认开启22号端口,所以只需要将22号端口映射到本地的一个端口上就行,**这里的ip地址一定要写全(**也就是本地机器的ip,大部分教程都没写全,如果不知道可以用ifconfig进行查询):
docker run -itd --name sunstrong_unbuntu --privileged=true -p 192.168.80.129:80:22 new_ubuntu /bin/bash
具体的运行结果如下:
root@ubuntu:~# docker run -itd --name sunstrong_unbuntu --privileged=true -p 192.168.80.129:80:22 new_ubuntu /bin/bash
a2ef02e82e6dd65305dd6eb73339f7ed68afd5add1b33e1e4bc0c332ba6251e1
root@ubuntu:~#
远程登录注意:
如果需要登录,一定要进入docker容器,并开启ssh服务,具体的命令为:service ssh start,否则会一直显示连接失败