docker

  1. 简介
  2. 权限问题
    1. 需要sudo权限才能使用docker命令
  3. 使用命令
    1. 临时拷贝docker中的文件
    2. 停止/删除所有容器
    3. 镜像瘦身
    4. 持久化
    5. 推送到hub.docker.com

简介

权限问题

需要sudo权限才能使用docker命令

因为docker使用的Unix Socket文件/var/run/docker.sock,这个文件的权限受控。

解决办法有3种:

  1. 切换为root或者使用sudo运行
  2. 将当前用户添加到docker用户组
  3. 修改docker.sock的权限设置(chmod o+rw)

推荐第二种方法

1
2
3
4
5
6
7
8
9
10
cat /etc/group | grep docker # 确认docker用户组是否存在
groups # 确认自己是否在docker用户组中。

# sudo groupadd docker # 如果docker用户组不存在,则添加?添加之后权限没设置能用吗,存疑。不过一般安装好docker后,系统中就存在docker这个用户组了。

sudo gpasswd -a ${USER} docker # 将当前用户添加到docker组

sudo service docker restart

# 重连,起刷新效果,就能用了

使用命令

临时拷贝docker中的文件

1
docker cp [container id]: [path in docker] [path in host]

停止/删除所有容器

1
2
docker stop $(docker ps -aq) # 停止,之后运行docker ps -a仍有,可以通过docker start重新启动
docker rm $(docker ps -aq) # 删除,docker ps -a便没有了

镜像瘦身

xxx

持久化

有三个命令docker commit, docker save, docker export。我目前图方便,仅使用了最后一个。如下:

1
2
3
4
5
docker ps # 看容器的唯一id
docker export -o output.tar [container ID]

docker import output.tar [username]/[project]:[version]
docker images # 查看导入的镜像

推送到hub.docker.com

类似于早期的github,虽然免费,但是要求项目公开。否则按需收费。
若想推送,需要先在网站中注册账号,并验证才能上传。

1
2
3
docker login # 根据Prompt输入账号密码
docker push [username]/[project]:[version] # 这里的[username]必须与dockerhub中注册的用户名一致。如不一致,可以用docker tag添加一个完全相同内容但是不同名字的镜像
docker tag [image name] [username]/[project]:[version]


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。