Docker编译环境的使用(ubuntu)

目录

Ubuntu安装docker

重启docker

拉取镜像

进入docker安装软件

提交docker

添加用户到docker组

进入docker

添加build用户

停止容器

保存docker镜像

load镜像

删除容器


Ubuntu安装docker

sudo apt install docker.io

国内可用的源  

Welcome to nginx! (tencentyun.com)icon-default.png?t=O83Ahttps://ccr.ccs.tencentyun.com/

换源

在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

{
"registry-mirrors": ["https://ccr.ccs.tencentyun.com/"]
}

重启docker

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

拉取镜像

sudo docker pull ubunut:16.04

进入docker安装软件

sudo docker run -it --name build3308 ubuntu:16.04 /bin/bash

安装完后exit退出docker

提交docker

docker commit -m "Added some-package" -a "build" build3308 build:3308

docker image显示如下

build@ubuntu:~$ sudo docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

build 3308 4d13656ff6cf 4 minutes ago 687MB

ubuntu 16.04 b6f507652425 3 years ago 135MB

添加用户到docker组

sudo usermod -aG docker $USER

运行脚本启动容器

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="build:3308"

docker run -it \
        -d \
		--privileged \
		--name build_3308 \
		-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

sudo docker exec -u root -it build_3308 /bin/bash

添加build用户

这里的1000和build要和你宿主机上的用户名uid一致,方便后面编译出来的权限等问题

useradd -u 1000 build

查看用户信息

cat /etc/passwd

然后exit退出

停止容器

sudo docker stop build_3308

提交修改

sudo docker commit build_3308 build:3308bs

修改脚本

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="build:3308bs"

docker run -it \
        -d \
		--privileged \
		--name build_3308bs \
		-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

sudo ./start_docker.sh

进入docker

docker exec -u build -it build_3308bs /bin/bash

保存docker镜像

先docker images看下IMAGE ID

build@ubuntu:~/work$ sudo docker images

[sudo] password for build:

REPOSITORY TAG IMAGE ID CREATED SIZE

build 3308bs_1604 d40881c1ff67 29 minutes ago 706MB

build 3308bs 3cbe2a080c3a 18 hours ago 687MB

fed93a8b490d 20 hours ago 687MB

build 3308 4d13656ff6cf 22 hours ago 687MB

ubuntu 16.04 b6f507652425 3 years ago 135MB

build@ubuntu:~/work$

然后save

sudo docker save -o rk3308.tar build:3308bs_1604

load镜像

docker load -i rk3308.tar

删除容器

sudo docker images ps -a列出来全部

sudo docker stop (id)

sudo docker rm (id)

然后sudo docker rmi (id)

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