linux docker创建容器教程

                                                                        linux docker创建容器教程

目录

1.docker镜像和容器区别:

2. 拉取镜像:

3. 运行镜像,即->开启容器:

4. docker内上网:

5. 安装各种软件:

6. 解决cv2的问题:

7. 设置python版本:

8. 通过pycharm远端连接docker内虚拟环境

9. 打包(镜像 tar 迁移)


 


1.docker镜像和容器区别:

镜像是本地文件,容器是正在run运行的,需要将容器 save 或者 export   或者 commit 到本地,尽量不要覆盖原来的镜像;

2. 拉取镜像:

docker pull ***镜像

docker images

docker ps -a

docker stop Container_Name 停止容器

docker rm Container_Name 删除容器

3. 运行镜像,即->开启容器:

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 容器名 删除容器

4. docker内上网:

cd /root

修改.bashrc,添加环境变量(可采用sed -i 'N;4a\export http_proxy=http://:6666' .bashrc命令直接修改)

若是不知道ip,win下面cmd ipconfig,无线局域网适配器 WLAN IPV4地址

export http_proxy=http://:6666

export https_proxy=http://192.***:6666

source .bashrc

修改apt源

编辑/etc/apt/sources.list(尽量不能换行)

  1. deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
  2. deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
  3. deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
  4. deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
  5. deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
  6. deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
  7. deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
  8. deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
  9. deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
  10. 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 更新软件

5. 安装各种软件:

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

即可!

##########################################################################

6. 解决cv2的问题(若遇不到跳过):

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以下

7. 设置python版本:

将python默认成python3.5

rm /usr/bin/python

ln -s /usr/bin/python3.5 /usr/bin/python

查看python -V        pip -V

8. 通过pycharm远端连接docker内虚拟环境

# 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

9. 打包(镜像 tar 迁移)

docker commit container_id image_name:tag  #将容器转成镜像

docker save image_id -o /somepath/image_name.tar  # 压缩

linux docker创建容器教程_第1张图片

10. 一些建议

(1) 尽量采用dockerfile 进行build,有build历史

(2) 尽量采用docker-compose.yml设置

 

 

 

你可能感兴趣的:(操作)