解决Docker必须使用sudo操作的问题
操作步骤如下
1.创建docker组:sudo groupadd docker
2.将当前用户加入docker组:sudo gpasswd -a ${USER} docker
3.重启服务:sudo service docker restart
4.刷新docker成员:newgrp - docker
【注】:在ubuntu下亲测,其他linux没有测试。
补充:linux下docker安装,以及配置不使用sudo命令执行docker
安装
执行以下命令即可
wget -qO- https://get.docker.com/ | sh
不使用sudo命令执行docker
为什么需要创建docker用户组?
Docker守候进程绑定的是一个unix socket,而不是TCP端口。这个套接字默认的属主是root,其他是用户可以使用sudo命令来访问这个套接字文件。因为这个原因,docker服务进程都是以root帐号的身份运行的。
为了避免每次运行docker命令的时候都需要输入sudo,可以创建一个docker用户组,并把相应的用户添加到这个分组里面。当docker进程启动的时候,会设置该套接字可以被docker这个分组的用户读写。这样只要是在docker这个组里面的用户就可以直接执行docker命令了。
警告:该dockergroup等同于root帐号,具体的详情可以参考这篇文章: Docker Daemon AttackSurface .
1 使用有sudo权限的帐号登录系统。
2 创建docker分组,并将相应的用户添加到这个分组里面。
sudo usermod -aG docker your_username
3 退出,然后重新登录,以便让权限生效。
4 确认你可以直接运行docker命令。
$ docker run hello-world
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
如何免sudo使用docker命令详解
背景 Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker提供了一种在安全.可重复的环境中自动部署软件的方式,它的出现拉开了基于云计算平台发布产品方式的变革序幕. 对Linux系统管理员或高级用户而言,sudo是必不可少的最重要的命令之一.而因为使用的是sudo安装docker,所以会导致一个问题.以普通用户登录的状况下,在使用 docker images 时必须添加
-
不使用sudo 执行Docker命令的方法
Problem 默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,非常浪费时间影响效率. 如果不跟 sudo,直接执行 docker images 命令会有如下问题: [liujun@li1581-58 ~]$ docker ps Cannot connect to the Docker daemon. Is the docker daemon running on this host? [liujun@li1581-58 ~]$ ps -ef | grep do
-
使用docker命令不需要敲sudo的操作
由于docker daemon需要绑定到主机的Unix socket而不是普通的TCP端口,而Unix socket的属主为root用户,所以其他用户只有在命令前添加sudo选项才能执行相关操作. 如果不想每次使用docker命令的时候还要额外的敲一下sudo,可以按照下面的方法配置一下. 1.创建一个docker组 $ sudo groupadd docker 2.添加当前用户到docker组 $ sudo usermod -aG docker $USER 3.登出,重新登录shell 4.验
-
解决Docker必须使用sudo操作的问题
操作步骤如下 1.创建docker组:sudo groupadd docker 2.将当前用户加入docker组:sudo gpasswd -a ${USER} docker 3.重启服务:sudo service docker restart 4.刷新docker成员:newgrp - docker [注]:在ubuntu下亲测,其他linux没有测试. 补充:linux下docker安装,以及配置不使用sudo命令执行docker 安装 执行以下命令即可 wget -qO- https://
-
解决docker pull被复位出现的问题
本文介绍了解决docker pull被复位出现的问题,分享给大家,具体如下: 例如: $ docker pull ubuntu:16.04 Trying to pull repository docker.io/library/ubuntu ... Get https://registry-1.docker.io/v2/library/ubuntu/manifests/sha256:dd7808d8792c9841d0b460122f1acf0a2dd1f56404f8d1e5629804888
-
解决mysql服务器在无操作超时主动断开连接的情况
我们在使用mysql服务的时候,正常情况下,mysql的设置的timeout是8个小时(28800秒),也就是说,如果一个连接8个小时都没有操作,那么mysql会主动的断开连接,当这个连接再次尝试查询的时候就会报个"MySQL server has gone away"的误,但是有时候,由于mysql服务器那边做了一些设置,很多情况下会缩短这个连接timeout时长以保证更多的连接可用.有时候设置得比较变态,很短,30秒,这样就需要客户端这边做一些操作来保证不要让mysql主动来断开.
-
如何解决docker容器启动失败
问题:电脑重启之后,docker里面的mysql容器重启不了,不知道是什么原因 上面的步骤:如果sudo docker start name 能重新启动,也就是输入:docker ps 能看到自己所需要的服务已经开启,那就不需要再进行下面的步骤了,如果刚好像上面那样,那就接着看下文: 解决办法:删除启动不了的容器,然后再重新运行镜像. 注意此时的容器名已经变为mysql了,为关闭状态,再运行镜像时还是运行不了,但此时再启动镜像时就可以启动了 内容补充 1.查看docker占用的挂载点 cat /
-
解决docker使用GDB,无法进入断点的问题
问题 docker里运行gdb,打了断点,却无法进入断点 原因 docker为了保证主机安全,docker开了很多安全设置,其中包括ASLR(Address space layout randomization),即docker里的内存地址和主机内存地址是不一样的. ASLR会导致GDB这种依赖地址的程序无法正常运作. 解决方法 使用docker的超级权限,加入--privileged(两个横线,markdown语法 如: docker run --privileged -- GDB即可正常运作
-
解决Docker启动Elasticsearch7.x报错的问题
使用Docker run 命令 docker run -d -p 9200:9200 -p 9300:9300 --name 用户自定义名字 容器ID 会看到一串字符串,一般情况下我们会误以为它启动成功 我们执行docker ps -a是发现它自动退出了 使用docker logs -f 容器ID 查看日志发现: ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] li
-
解决docker日志挂载的问题
关键是本地服务器没有写入的权限 关键看这里吧(Permission denied), 一直没有看正方,以为是配置日志文件 找不到有问题,下面是部分异常 10:35:09,498 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(null,true) call failed. java.io.FileNotFoundException: logs/bandwidth.log.2019-04-25.
-
Docker容器时区调整操作
如何检查Docker容器时区是否与宿主机一致? 1.进入宿主机, 执行以下命令: # 查看宿主机时间 [root@localhost ~]# date 2018年 06月 27日 星期三 22:42:44 CST 2.进入到容器中,执行以下命令 # 查看容器时间 root@lksjoid909090:/#date Wed Jul 27 14:43:31 UTC 2018 CST应该是指(China Shanghai Time,东八区时间) UTC应该是指(Coordinated Universa
-
在docker中开启sshd操作
首先在docker中安装openssh-server,安装完毕后切换到openssh-server的安装目录/etc/ssh下面. 运行ssh-keygen生成对应的密钥. 先看看sshd的配置文件sshd_config,里面有如下内容: HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host
-
解决docker pull镜像报错的问题
描述: 在win10下安装VM,在VM里运行docker,使用docker pull拉取镜像时报错 一. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 原因: 使用docker pull 命令拉取镜像时,如果不添加额外的信息如docker pull nginx
随机推荐
- Python函数式编程
- js中关于一个分号的崩溃示例
- JS/jQ实现免费获取手机验证码倒计时效果
- Spring Boot无缝集成MongoDB
- 跟老齐学Python之画圈还不简单吗?
- Python按行读取文件的实现方法【小文件和大文件读取】
- Android编程获取手机后台运行服务的方法
- 基于promise.js实现nodejs的promises库
- linux下wc统计文件的个数、行数、字数、字节数等信息方法
- VC解析XML文件-CMarkup的使用详解
- Android视频点播的实现代码(边播边缓存)
- 基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
- 加载页面遮挡耗时操作任务页面--第三方开源之AndroidProgressLayout
- 支持IE和firefox的js代码美化加亮源码
- C#实现简单屏幕监控的方法
- Vue.JS项目中5个经典Vuex插件
- 微信小程序云开发之模拟后台增删改查
- vue图片加载失败时用默认图片替换的方法
- java使用renderer将pdf按页转换为图片
- python 实现让字典的value 成为列表
