记录一次docker镜像迁移过程

1.在母本服务器上查看要复刻的docker镜像。

 sv800:build 作为docker镜像源[repository:tag],使用docker save 指令提出docker镜像包rk3588.tar

docker save -o rk3588.tar sv800:build

2.在新环境下加载docker镜像包,预先安装docker指令工具

docker load -i rk3588.tar

执行效果图:

记录一次docker镜像迁移过程_第1张图片

安装完成后使用docker images指令可以看到docker下已经load的images信息。

 3.启动load完成的image镜像,创建docker容器,执行star_docker.sh

脚本内容如下:

USER_ID=$(id -u)
GRP=$(id -g -n)
GRP_ID=$(id -g)
LOCAL_HOST=`hostname`
DOCKER_HOME="/home/$USER"

if [ "$USER" == "root" ];then
    DOCKER_HOME="/root"
fi
if [ ! -d "$HOME/.cache" ];then
    mkdir "$HOME/.cache"
fi

IMG="sv800:build"

docker run -it \
        -d \
		--privileged \
		--name sv800_build \
		-e DOCKER_USER=$USER \
		-e USER=$USER \
		-e DOCKER_USER_ID=$USER_ID \
		-e DOCKER_GRP=$GRP \
		-e DOCKER_GRP_ID=$GRP_ID \
		-e TERM="xterm-256color" \
		--env ROS_DOMAIN_ID=$(date +%N) \
		-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
		-v /media:/media \
		-v $HOME/.cache:${DOCKER_HOME}/.cache \
		-v /etc/localtime:/etc/localtime:rw \
		-v /home/build/:/home/build \
		--net host \
		--shm-size 512M \
		-w /home/build \
		$IMG \
		/bin/bash

执行成功后,便可再执行docker ps时看到运行状态的docker容器

4.以root身份进入docker环境,在docker内添加一个与docker外用户名及用户id一致的用户,这样在工作时,使文件在docker内外环境下都有一致的所有权属性。

执行into_docker_root.sh 以root身份进入docker。脚本内容如下:

docker exec -u root -it sv800_build /bin/bash

以root进入docker环境后,使用useradd xxx添加xxx用户,vi修改/etc/passwd文件中xxx用户对应的用户id值,使其与docker环境外的xxx用户id值保持一致。修改完成后,exit退出docker环境。

5.以xxx用户进入docker

执行into_docker.sh 以xxx身份进入docker环境,脚本内容:

docker exec -u xxx -it sv800_build /bin/bash

其中sv800_build对应的是docker ps指令中的NAMES,NAMES在star_docker.sh中--name参数指定。

确定是否在docker环境中,可以cat /proc/1/cgroup 是否有docker字段。也可以简单尝试是否有docker指令。

你可能感兴趣的:(docker,运维,容器)