docker安装
以Ubuntu18.04为例:
卸载以前的docker相关内容
sudo apt-get remove docker docker-engine docker.io containerd runc
配置密钥、仓库
sudo apt-get update
安装依赖包
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
验证您现在是否拥有带有指纹的密钥
sudo apt-key fingerprint 0EBFCD88
设置稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
安装docker engine
更新
sudo apt-get update
安装Docker-ce
sudo apt-get install docker-ce
启动
sudo systemctl enable docker
sudo systemctl start docker
以上是x86端安装docker的方法,arm端Ubuntu18.04安装docker可以参考我另一篇文章,包括docker容器创建、添加等命令的解析:
Ubuntu应用拓展(4)——ubuntu18.04系统运行docker容器(RK3399)
https://blog.csdn.net/scottmvp/article/details/113939069
创建docker容器
搜索远程仓库镜像
docker search ubuntu:16.04
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
fuyuanli/xampp XAMPP based on Ubuntu:16.04 5
...
rocm/dev-ubuntu-16.04 Docker image based on Ubuntu:16.04 with the … 3
拉取镜像
docker pull fuyuanli/xampp //精确指定远程要拉取的镜像
docker pull ubuntu:16.04 //这种类似于模糊指定要拉取的镜像版本
使用镜像创建容器
docker run -itd --name 3399_android_16.04 --privileged=true --cap-add=SYS_ADMIN -v /data/home/junshou/rk3399:/home/forlinx/work -p 10000:22 7af3f17d08e6 bin/bash
进入容器
docker exec -it 3399_android_16.04 bash
容器中用户配置、ssh安装
1、更新root用户密码
passwd root
2、添加普通用户
useradd forlinx
groupadd forlinx
passwd forlinx
3、修改用户uid、gid
$ vi /etc/passwd
forlinx:x:1000:1000::/home/forlinx:
$ vi /etc/group
forlinx:x:1000:
4、赋予普通用户sudo权限
在/etc/sudoers文件里给forlinx用户添加权限
1.切换到root用户下
2./etc/sudoers文件默认是只读的,对root来说也是,因此需先添加sudoers文件的写权限,命令是:
chmod u+w /etc/sudoers
3.编辑sudoers文件
vi /etc/sudoers
找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)
(ps:这里说下你可以sudoers添加下面四行中任意一条
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.)
4.撤销sudoers文件写权限,命令:
chmod u-w /etc/sudoers
5、创建ssh服务
sudo apt-get install openssh-server
sudo /etc/init.d/ssh start
容器提交
提交容器生成docker镜像
docker commit 3399_android_16.04 ok3399_android_16.04_image
docker save -o ok3399_android_16.04.tar.bz2 ok3399_android_16.04_image
tar jcvf docker_image.tar.bz2 ok3399_android_16.04.tar.bz2 进一步压缩的效果很明显,1G->300M
docker commit 3399_android_16.04 ok3399_android_16.04_image:v1.0 带标签提交
给docker镜像打标签
docker tag ok3399_android_16.04_image ok3399_android_16.04_image:v1.0
删除已有的标签
docker image rm ok3399_android_16.04_image:latest
使用提供的docker镜像重新生成容器
docker load -i ok3399_android_16.04.tar.bz2
docker run -itd --name 3399_android_16.04_1 --privileged=true --cap-add=SYS_ADMIN -v /data/home/junshou/rk3399:/home/forlinx/work -p 20000:22 ok3399_android_16.04_image bin/bash
容器根目录迁移
参考链接:
https://blog.csdn.net/catoop/article/details/103290673
docker默认的overlay挂载分区因为docker容器不断增减,空间面临不足的问题,这时我们可以通过迁移docker默认的根目录,将docker挂载到其他的磁盘分区中,修改方法参考链接。
迁移完成以后可能会遇到的问题(因为docker文件是使用sudo权限迁移的)
1、sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
解决方法:
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
2、部分目录变为了root数组,普通用户不能写
解决方法:
sudo chmod g+w xxx
sudo chmod o+w xxx