1.安装
docker分 EE(Enterprise Edition, 收费) 和 CE(Community Edition, 免费)版本,支持Window,Mac,Ubuntu,CentOS,Debian等操作系统。
Docker简单理解就是可以把当前工程需要的环境打包成一个镜像,该镜像可以直接在任意一个安装docker环境的电脑上直接使用,从而更方便地移植和应用。
本文使用环境:Ubuntu16.04 Service,Docker CE。安装教程参考官网Docker Docs,下述为我的安装记录
sudo apt-get -y install apt-transport-https ca-certificates curl
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
社区版
sudo apt-get -y install docker-ce
sudo docker run -it hello-world # 测试docker,第一次使用会自动下载,并进入hello-world container正常输出则安装成功,
sudo docker images
# 查看当前系统存在的images,至此应该只有一个hello-world
sudo docker ps -a
# 查看创建container的history
ctrl+d
退出容器
2.添加用户到docker组
添加后每次使用docker命令不用使用sudo
cat /etc/group | grep docker # 查找 docker 组,确认其是否存在
sudo groupadd docker # 不存在添加docker组
sudo gpasswd -a ${USER} docker # 添加用户
sudo service docker restart # 重启docker服务
3.创建最小系统镜像
正如github一样,docker hub管理docker,注册完账户后可以执行创建repository等操作,此处不讲如何pull/push docker image具体过程,仅以ubuntu系统镜像使用为例进行说明。
docker search ubuntu
# 在不确定名称时可搜索镜像

NAME表示docker image名称,后面的DESCRIPTION是镜像描述,STARS第一个最多,就是它了,哈哈
docker run -it ubuntu
# 第一次加载时如果本地没有镜像会自动下载,下载完后会以下载的ubuntu image创建一个container并进入。该镜像只包含kernal等必要的东西,非常精简干净,以至于连个vim都没有,建议先安装如下几个包:
apt-get update # 更新源,container里面不需要sudo
apt-get install vim
apt-get install python3
apt-get install python3-pip
至此,可以对文件进行操作并使用pip3安装一些python库了,如果出现连不上网的情况可以添加--net=host
让容器使用本机网络设置。
为了以后再使用该镜像不用再次进行安装,可通过当前container更新镜像,打开一个新的终端,运行docker ps
显示当前运行的container

使用commit命令进行镜像更新
docker commit c47 ubuntu
,第一个参数指定container,可以使用长ID:c4737329f512、短ID:c47/c4737和NAME:undepthflowed任意一种指定,第二个参数指定保存image的 NAME[:Tag],该处只指定了名称为ubuntu,tag没有指定默认为ubuntu:latest。完成后docker images
可看到ubuntu镜像已经更新。但commit只是对本机进行了更新,也可以将进行导出,然后拷贝到其他电脑上再导入。
docker images
sudo docker save ID > ubuntu-test.img # 镜像的保存
sudo docker load < ubuntu-test.img # 镜像的导入
sudo docker export ID /NAME > ubuntu-test.tar # 容器的导出
sudo docker import ubuntu-test.tar # 容器的导入
sudo docker ID ubuntu-test:1.0.0 # 容器重新命名
放心在container里面操作,不会影响系统的,非常适合服务器上给新手使用,编程安全第一...
4.使用带cuda和cudnn环境的镜像(深度学习)
自己再ubuntu系统安装深度学习环境比较麻烦,在nvidia/cuda出下载所需OS、cuda、cudnn对应版本的Dockerfile,修改名称,终端cd到Dockerfile文件夹,使用docker build --build-arg repository=nvidia/cuda -t ai:1.0
命令。系统会自动下载对应镜像并进入,可仿照前面进行下一步操作。该镜像是先下载一个装了cuda版本的镜像,然后执行apt-get命令装cudnn,在第二步可能会有网络连接不上的问题。此时可以通过下载的cuda镜像进入container,然后手动安装。
5.一些常用命令
命令 | 作用 |
---|---|
images | 显示image列表 |
ps | 显示container列表 |
history | 显示镜像构建历史 |
commit | 从容器创建新镜像 |
build | 从 Dockerfile 构建镜像 |
tag | 给镜像打tag |
pull | 从registry下载镜像 |
push | 将镜像上传到registry |
rmi | 删除 Docker host 中的镜像 |
rm | 从磁盘中删除容器,--rm选项不能与-d同时使用,即只能自动清理foreground容器,不能自动清理detached容器 |
run | 运行容器 |
search | 搜索 Docker Hub 中的镜像 |
pause | 暂停容器 |
unpause | 取消暂停继续运行容器 |
create | 创建容器 |
start | 启动容器 |
attach | attach启动进程的终端 |
exec | 在容器中启动新进程,通常使用 "-it" 参数 |
6.参数
参数 |
---|
-v /etc/apt/:/home/etc # bind mount,共享host和container文件夹,默认可读可写 |
-v /etc/apt/:/home/etc:ro #只读 |
docker run -dit [CONTAINER_NAME or CONTAINER_ID] # 后台运行 |
网友评论