Docker和K8s

1、docker是什么

docker包含三部分:镜像、容器和仓库。

容器打包好某环境,包括操作系统、库、资源等配置;镜像是容器的备份,不含任何程序的一个环境配置copy;仓库存储若干容器。

真正使用时,仓库里存储若干镜像(image),用户可以从仓库直接pull镜像(image)到本地,再启动容器实例化某镜像

2、docker的好处

最直接的好处:docker可以让某容器在A机器配置好,而后在B机器运行。尤其是对于一些保密单位,可以在自己机器配好环境,导出为tar文件,而后在内网机运行。

3、docker安装和配置

docker安装及环境容器上传_祥瑞的技术博客-CSDN博客_docker容器安装环境

cnblogs.com/miaoying/p/13438258.html

4、docker初体验教程

Docker 入门教程 - 阮一峰的网络日志

先找到镜像

sudo docker (image) pull *

再把镜像实例化为容器

sudo docker (container) run *

4.1配置GAT

例如 ,GAT需要配置3.5.2的python+cuda9.0+tensorflow1.6.0

内网机无法提供tensorflow1.6.0,因此外网配置一个3.5.2+1.6.0的容器,再打包成tar

首先,复制镜像

xxfan@nlp-Demo:~/py35_tf16$ sudo docker image pull python:3.5.2
sudo: unable to resolve host nlp-Demo
3.5.2: Pulling from library/python
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
52f3db4b5710: Pull complete 
45b2a7e03e44: Pull complete 
3117a9af6796: Pull complete 
76ec9d6ced3b: Pull complete 

其次,根据镜像复现一个容器,-i参数是交互参数,-t是终端。而容器执行的第一个操作是/bin/bash,可以直接在bash里操作。

#证明已经在容器内,容器的编码是dcea478ba4ec。

xxfan@nlp-Demo:~/py35_tf16$ sudo docker container run -it  python:3.5.2  /bin/bash
sudo: unable to resolve host nlp-Demo
root@dcea478ba4ec:/# 

关机后再次启动docker,用restart重启,attach连接上docker

xxfan@nlp-Demo:~$ sudo docker container restart dcea478ba4ec
sudo: unable to resolve host nlp-Demo
dcea478ba4ec
xxfan@nlp-Demo:~$ sudo docker attach dcea478ba4ec
sudo: unable to resolve host nlp-Demo

下载完后打包为tar:先commit提交为镜像,再查看确定生成镜像成功

sudo docker commit -a "user_name" -m "tar_name" container_id image_name

xxfan@nlp-Demo:~$ sudo docker commit -a "fanxx" -m "py35tf16" dcea478ba4ec tmf-web:202193
sudo: unable to resolve host nlp-Demo
[sudo] password for xxfan: 
sha256:ed9719afdba6806f20e9c8143b085105a2a45843897b24f8dbd0ca89e6f682be
xxfan@nlp-Demo:~$ sudo docker image ls

 然后save为tar格式

xxfan@nlp-Demo:~$ sudo docker save -o py35tf16.tar  tmf-web:202193

 同理。导出时:

docker load -i *.tar
fanxiaoxuan@nlp:~$ sudo docker load -i py35tf16.tar 
[sudo] fanxiaoxuan 的密码: 
a2ae92ffcd29: Loading layer  128.9MB/128.9MB
0eb22bfb707d: Loading layer  45.18MB/45.18MB
30339f20ced0: Loading layer  126.6MB/126.6MB
f55f65539fab: Loading layer  330.5MB/330.5MB
311f330fa783: Loading layer  8.104MB/8.104MB
de4f53fbd5e1: Loading layer  67.84MB/67.84MB
1cc2f45986fd: Loading layer   5.12kB/5.12kB
04f58001cb46: Loading layer  1.457GB/1.457GB
Loaded image: tmf-web:202193
查看是否有镜像:docker  images|grep *
fanxiaoxuan@nlp:~$ sudo docker images|grep tmf-web
tmf-web                             202193              ed9719afdba6        3 days ago          2.14GB

根据镜像生成容器:docker       run     -it     image_name     /bin/bash

fanxiaoxuan@nlp:~$ sudo docker container run -it tmf-web:202193 /bin/bash
root@e5631444cfe4:/#

如果是通过对已经在运行的容器,想进入容器,就执行docker exec -it container_name /bin/bash 

注意而后发现此时生成的容器无法驱动nvidia,因此重新生成了一个新容器

fanxiaoxuan@nlp:~$ lspci | grep VGA
07:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
08:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
fanxiaoxuan@nlp:~$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:03.2/0000:08:00.0 ==
vendor   : NVIDIA Corporation
modalias : pci:v000010DEd00001B06sv00001458sd0000376Bbc03sc00i00
manual_install: True
driver   : nvidia-418 - third-party free
driver   : nvidia-410 - third-party free
driver   : nvidia-430 - third-party free recommended
driver   : nvidia-384 - distro non-free
driver   : nvidia-415 - third-party free
driver   : xserver-xorg-video-nouveau - distro free builtin

啧,docker居然需要配置ls这种基础命令:

export PATH=/usr/bin:/usr/local/bin/:/usr/sbin/:/usr/local/sbin/:/bin:/sbin/

停止容器:docker stop container_id

删除容器:docker rm contariner_id

删除镜像:docker rmi image_id

5、vscode+docker+dockerfile配置好后,打包在其他平台:(注意:dockerfile在代码的根目录下。)

由于所用的应用大多数是python文件,因此用FROM直接拉取的包为python的包。

WORKDIR是工作目录,以下命令均在docker里执行。

COPY . .是把当前目录下所有文件拷贝到docker里的. 

(以下为dockerfile的文件里写的内容)

FROM python:3.5.1
WORKDIR /docker_dir
COPY . .
RUN pip install -r requirements.txt
CMD ["/bin/bash","run.sh"]
#/bin/bash无法在windows环境下运行。硬件不支持。

【防错提醒:在外环境下,试一下pip install -r requirements.txt,查看pip能否执行安装命令。如果找不到库,类似:Could not find a version that satisfies the requirement sklearn==0.20.2 (from -r requirements.txt (line 4)) (from versions: 0.0)这类错误,说明pip现在已经不支持直接安装,建议自己下载好,再在docker里单独安装】

为了生成image,需要在shell里执行:docker build -t  docker-name:tags .

【防错提醒:不要随意添加docker镜像加速器!不要随意添加docker镜像加速器!会把docker引擎搞崩的!】

生成好的image,打包为tar文件:

docker images #列出所有images

显示如图所示

docker save the_images:the_tags > path/name.tar #把the_images、标签为the_tags的这个镜像打包,放到路径path下,名称为name.tar

docker save -o 名称.tar ImagesId或镜像名:标签名

6、docker占用c盘空间,将其挪到其他位置。

        步骤1:停掉并清空所有image和容器:在desktop-上方爬虫状的按钮-Clean/Purge Data

        步骤2:wsl处理:

 

 通过对文件夹下内容查看,确定了现在D盘的该路径是存储磁盘镜像文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值