docker容器(1)——docker安装、创建、 提交、迁移

39 篇文章 13 订阅
2 篇文章 0 订阅

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值