美文网首页
2018-11-08

2018-11-08

作者: zhangzjn | 来源:发表于2018-11-08 21:59 被阅读0次

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/c4737NAME: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] # 后台运行

相关文章

网友评论

      本文标题:2018-11-08

      本文链接:https://www.haomeiwen.com/subject/ucpgxqtx.html