Docker --搭建属于自己的镜像

虽然以前就知道,到今天才发现docker真是个好东西,省去了各种环境配置,直接拉取镜像就可以了,今天记录一下,免得总是忘记。

1. 安装

docker官网:https://docs.docker.com/install/linux/docker-ce/ubuntu/

dockerd 安装直接参考官网就好,一步一步粘贴,没毛病~~~
ps:如果拉取太慢的话可以考虑用阿里云的镜像加速器,可以参考(https://yq.aliyun.com/articles/29941)

2.入门

docker的入门可以利用官方给的get_started

3.安装nvidia-docker

安装可以参考https://github.com/NVIDIA/nvidia-docker,同样直接照着说明贴就行。安装好以后用nvidia-smi测试一下就行啦~~~

nvidia-docker其实是docker引擎的一个应用插件,专门面向NVIDIA GPU,因为docker引擎是不支持NVIDIA驱动的,安装插件后可以在用户层上直接使用cuda。具体看上图。这个图很形象,docker引擎的运行机制也表现出来了,就是在系统内核之上通过cgroup和namespace虚拟出一个容器OS的用户空间

4.build自己的镜像

为了保持镜像的纯净,里面只有一些基本库,即使安装需要的库后,一旦退出就什么都没了,so~~~~,我们要创建自己的镜像。方法有两种:

1)从已经创建的容器中更新镜像,并且提交这个镜像

  • 创建容器
runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/#
  • 在运行的容器内使用 apt-get update 命令进行更新。
  • 按需求更改容器
  • 此时 ID 为 e218edb10161 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。(另开一个terminal,不要退出)
runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8

-各个参数说明:

  • m: 提交的描述信息
  • a: 指定镜像作者
  • e218edb10161:容器 ID
  • runoob/ubuntu:v2: 指定要创建的目标镜像名

2)使用 Dockerfile 指令来创建一个新的镜像(推荐)

  • 创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
  1. 第一条FROM,指定使用哪个镜像源
  2. RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
  • 使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "[email protected]"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......

参数说明:

  • -t :指定要创建的目标镜像名
  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

runoob@runoob:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
runoob/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
runoob/ubuntu       v2                  70bf1840fd7c        17 hours ago         158.5 MB
ubuntu              14.04               90d5884b1ee0        6 days ago           188 MB
php                 5.6                 f40e9e0f10c8        10 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago          324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 weeks ago          136.3 MB
hello-world         latest              690ed74de00f        6 months ago         960 B
centos              6.7                 d95b5ca17cc3        6 months ago         190.6 MB
training/webapp     latest              6fae60ef3446        12 months ago        348.8 MB

一些常用指令链接可以参考https://www.runoob.com/docker/docker-image-usage.html

你可能感兴趣的:(Docker --搭建属于自己的镜像)