linux docker创建容器教程
目录
1.docker镜像和容器区别:
2. 拉取镜像:
3. 运行镜像,即->开启容器:
4. docker内上网:
5. 安装各种软件:
6. 解决cv2的问题:
7. 设置python版本:
8. 通过pycharm远端连接docker内虚拟环境
9. 打包(镜像 tar 迁移)
镜像是本地文件,容器是正在run运行的,需要将容器 save 或者 export 或者 commit 到本地,尽量不要覆盖原来的镜像;
docker pull ***镜像
docker images
docker ps -a
docker stop Container_Name 停止容器
docker rm Container_Name 删除容器
docker run --runtime=nvidia -v /home:/home -v /mnt:/mnt -w /home/leilei -it --entrypoint bash -p 4444:22 -d --name cuda8.0-leilei -h pytorch0.3.1 --shm-size 32G nvidia/cuda:8.0-cudnn5.0-devel-ubuntu16.04
命令参数解析:
--runtime 运行环境,nvidia代表可以使用显卡
-v 目录映射(宿主机目录绝对路径:容器目录绝对路径),共享目录; /root就是用户目录,cd->pwd就可以得到;(可多次使用) 此处是挂载数据卷!
-w 工作目录,进入docker时默认的路径,但不一定是/root,直接cd,再pwd,可以看到/root
-it 进入docker之后命令行交互
--entrypoint 进入docker之后运行的命令
-p 开放端口,便于外部远端访问(4444是开放的外部端口,22默认是docker内的端口,尽量不变)
--name 给docker容器的命名
-h 给容器主机名hostname命名
-d 后台运行
nvidia/cuda:8.0-cudnn5.0-devel-ubuntu16.04 镜像名字(REPOSITORY:TAG)
docker start cuda8.0-leilei 开启容器
docker exec -it cuda8.0-leilei bash 进入容器 以命令行形式
docker stop 容器名 关闭容器
docker rm 容器名 删除容器
cd /root
修改.bashrc,添加环境变量(可采用sed -i 'N;4a\export http_proxy=http://
若是不知道ip,win下面cmd ipconfig,无线局域网适配器 WLAN IPV4地址
export http_proxy=http://
export https_proxy=http://192.***:6666
source .bashrc
修改apt源:
编辑/etc/apt/sources.list(尽量不能换行)
deb http:
//mirrors
.aliyun.com
/ubuntu/
xenial main restricted universe multiverse
deb http:
//mirrors
.aliyun.com
/ubuntu/
xenial-security main restricted universe multiverse
deb http:
//mirrors
.aliyun.com
/ubuntu/
xenial-updates main restricted universe multiverse
deb http:
//mirrors
.aliyun.com
/ubuntu/
xenial-proposed main restricted universe multiverse
deb http:
//mirrors
.aliyun.com
/ubuntu/
xenial-backports main restricted universe multiverse
deb-src http:
//mirrors
.aliyun.com
/ubuntu/
xenial main restricted universe multiverse
deb-src http:
//mirrors
.aliyun.com
/ubuntu/
xenial-security main restricted universe multiverse
deb-src http:
//mirrors
.aliyun.com
/ubuntu/
xenial-updates main restricted universe multiverse
deb-src http:
//mirrors
.aliyun.com
/ubuntu/
xenial-proposed main restricted universe multiverse
deb-src http:
//mirrors
.aliyun.com
/ubuntu/
xenial-backports main restricted universe multiverse
先rm -rf /etc/apt/sources.list.d(下载速度变快,找不到nvidia源和cuda源),再
apt-get update
再 apt-get upgrade 更新软件
apt-get install vim tmux python3.5 python3-pip
pip3 install --upgrade pip
pip升级后可能会出现问题,若出现,则解决方法(否则跳过):
cd /usr/bin
vim pip3
将from pip import main -》 from pip import __main__
将sys.exit(main()) -》sys.exit(__main__._main())
更换pip源:cd (/root 可省); mkdir .pip ; touch pip.conf ; vim pip.conf 将下面3行复制进去
[global]
index-url = http:
//mirrors
.aliyun.com
/pypi/simple
trusted-host = mirrors.aliyun.com
##########################################################################
此处单独:(若安装python3.6,请看这里,直接apt-get install python3.6报错,记住直接下载源码编译 最好,先安装依赖环境)
1. python官网下载Gzipped包 https://www.python.org/downloads/source/
2. 复制到docker容器内 docker cp /**/Python-3.6.8.tgz cuda8.0-leilei(容器名):/root/
3. 逐步执行命令:
(1) tar -xzf Python-3.6.8.tgz
(2) cd python-3.6.8 ; 再执行 ./configure
【在此之前,需安装python的依赖环境:apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl】
(3) make
(4) make install
4. which python3 usr/local/bin/python3.6.8 【docker容器内都是 usr/local/bin/】
5. 建立软连接: ln -s /usr/local/bin/python3.6 /usr/local/bin/python
ln -s /usr/local/bin/pip3 /usr/local/bin/pip
#只有先安装python的依赖环境,再安装python3.6,那么python3.6自带python3.6-pip。#
docker内配置中文编码环境(若遇不到跳过):
1.locale -a 是否有 C.UTF-8
2.编辑(vim) /root/.bashrc,添加环境变量
export LANG=C.UTF-8
export
LC_ALL=
"C.UTF-8"
export
LANG=
"C.UTF-8"
export
LANGUAGE=
"C.UTF-8"
source .bashrc
即可!
##########################################################################
apt-get
install
libglib2.0-dev
# 安装apt-file
apt-get
install
apt-
file
# 更新
apt-
file
update
# 寻找依赖
apt-
file
search libSM.so.6
# 安装依赖
apt-get
install
libsm6
apt-get
install
libxrender1
或者:
apt install python-qt4
将pillow版本降到7以下
将python默认成python3.5
rm /usr/bin/python
ln -s /usr/bin/python3.5 /usr/bin/python
查看python -V pip -V
# docker 命令 加入 -p参数
进入docker内执行如下命令:
apt-get update
apt-get upgrade
apt-get install openssh-server
修改ssh文件:vim /etc/ssh/sshd_config : PermitRootLogin prohibit-passwd 改为 PermitRootLogin yes
重启ssh:/etc/init.d/ssh restart
设置docker密码: 命令行执行 passwd 设置密码
pycharm远端连接docker内环境:(将端口号修改成4444即可,用户名默认root,再输入密码即可,找到)
docker内执行which python:将路径直接复制到pycharm里面虚拟环境;然后映射也映射到你的共享目录中某个文件夹
pycharm连接到远端请参考:https://blog.csdn.net/LEILEI18A/article/details/98493156
docker commit container_id image_name:tag #将容器转成镜像
docker save image_id -o /somepath/image_name.tar # 压缩
(1) 尽量采用dockerfile 进行build,有build历史
(2) 尽量采用docker-compose.yml设置