docker是个类似虚拟机的东西,但是比虚拟机好用,更轻量级。而且可以直接使用系统硬件,比如gpu。在很多时候,如果有一个docker image,可以省去很多配置环境,安装依赖包等的繁琐工作。

docker的简单教程:
http://www.runoob.com/docker/ubuntu-docker-install.html

本文介绍一下在ubuntu 14.04下docker的安装和使用

1. 安装

Docker 支持以下的 Ubuntu 版本:
Ubuntu Precise 12.04 (LTS)
Ubuntu Trusty 14.04 (LTS)
Ubuntu Wily 15.10
其他更新的版本……

Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。
通过 uname -r 命令查看你当前的内核版本

uname -r

使用脚本安装 Docker:

wget -qO- https://get.docker.com/ | sh

输入当前用户的密码后,就会下载脚本并且安装Docker及依赖包。

安装完成后有个提示:

If you would like to use Docker as a non-root user, you should now consider
    adding your user to the "docker" group with something like:

    sudo usermod -aG docker runoob
   Remember that you will have to log out and back in for this to take effect!

当要以非root用户可以直接运行docker时,需要执行 sudo usermod -aG docker xxx 命令,然后重新登陆,否则会有如下报错,xxx为非root用户用户名。如果不执行以上命令,在使用docker时,请加sudo。

启动docker 后台服务:

sudo service docker start

测试运行hello-world

docker run hello-world

也可以按照官方文档进行安装,不过过程较为繁琐:
https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

2. 运行docker镜像

列出本地镜像

sudo docker images
ituring@T7610:~/Download$ sudo docker images
[sudo] password for ituring: 
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
tensorflow/tensorflow   latest              02f42dc11beb        12 days ago         1.17GB
tensorflow/tensorflow   latest-gpu          a1afa03550aa        12 days ago         2.89GB
hello-world             latest              1815c82652c0        3 weeks ago         1.84kB
bamos/openface          latest              7e537bef9341        4 weeks ago         2.54GB
kaixhin/cuda-caffe      8.0                 f8f286d16016        2 months ago        3.5GB

以上是我本地的镜像

如果要使用hello-world镜像来运行容器时,命令如下:

ituring@T7610:~/Download$ sudo docker run -t -i bamos/openface /bin/bash
root@8a016d290da7:/#

看到用户已经从ituriing变为root了。

3. 在docker和主机之间拷贝文件

1.查看docker id

sudo docker ps -s
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES               SIZE
c667e21b5a23        bamos/openface      "/bin/bash"         9 minutes ago       Up 9 minutes        0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp   festive_lalande     28.1kB (virtual 2.54GB)

c667e21b5a23就是CONTAINER ID。

从主机拷贝文件到容器:

sudo docker cp /home/ituring/Download/ituring.tar.gz ceed456b5d23:/root/openface/images

从容器拷贝文件到主机:

sudo docker cp ceed456b5d23:/root/openface/nohup.out  /home/ituring/Download

3. 停止容器

sudo docker stop ceed456b5d23

4. 删除镜像

docker删除容器的命令是rm,删除镜像的命令是rmi

要删除镜像,必须先删除它对应的容器,删除容器前需要停止该容器。

先使用以下命令查看容器和镜像id

sudo docker ps -a

得到

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                   NAMES
117843ade696        ed9c93747fe1        /bin/sh -c /usr/sbin   46 hours ago        Up 46 hours         0.0.0.0:49153->22/tcp   test_sshd

可以看出ed9c93747fe1的image被117843ade696的container使用着,所以必须首先删除该container

sudo docker stop 117843ade696

删除容器

sudo docker rm 117843ade696

删除镜像

sudo docker rmi ed9c93747fe1

得到

Deleted: ed9c93747fe16627be822ad3f7feeb8b4468200e5357877d3046aa83cc44c6af
Deleted: c8a0c19429daf73074040a14e527ad5734e70363c644f18c6815388b63eedc9b
Deleted: 95dba4c468f0e53e5f1e5d76b8581d6740aab9f59141f783f8e263ccd7cf2a8e
Deleted: c25dc743e40af6858c34375d450851bd606a70ace5d04e231a7fcc6d2ea23cc1
Deleted: 20562f5714a5ce764845119399ef75e652e23135cd5c54265ff8218b61ccbd33
Deleted: c8af1dc23af7a7aea0c25ba9b28bdee68caa8866f056e4f2aa2a5fa1bcb12693
Deleted: 38fdb2c5432e08ec6121f8dbb17e1fde17d5db4c1f149a9b702785dbf7b0f3be
Deleted: 79ca14274c80ac1df1333b89b2a41c0e0e3b91cd1b267b31bef852ceab3b2044

删除成功

5. 利用docker file构建镜像

6. docker教程

非常好的docker教程:
https://github.com/yeasy/docker_practice