docker组成
仓库 (Registry)
镜像(Image)
容器(Container)
安装docker
https://docs.docker.com/get-docker/
https://www.runoob.com/docker/ubuntu-docker-install.html
将当前用户加入docker用户组,防止每次启动docker都需要用root权限
sudo usermod -aG docker $(whoami)
sudo reboot now #退出并重新登录后即可生效
查看docker 版本信息
sudo docker version
docker默认的工作路径
/var/lib/docker
https://blog.csdn.net/weixin_32820767/article/details/81196250
阿里云镜像加速
通过阿里云服务器登录
Docker底层原理
Docker常用命令
https://docs.docker.com/engine/reference/commandline/cli/
镜像命令
列出所有镜像
下载镜像
删除镜像
#删除本地镜像
docker rmi 镜像ID
haicoder(www.haicoder.net)# docker rmi 67fa590cfc1c
#删除全部镜像
docker rmi -f $(docker images -aq)
镜像分层理解
查看分层
docker image inspect redis:latest
提交镜像
启动镜像,映射主机目录
使用下面的命令启动镜像:
docker run -d -v /virtual_env1/home:/home:rw -p 12306:22 —name=quectel base_env:16.04
或者
docker run -it —privileged=true -v ~/workspace2/standard-robots/tk1/sdk-v5.4/kernel:/workspace a09dd0db7876
参数解释:
-d:表示在后台运行
-v:挂载宿主机硬盘,表示将宿主机的/virtual_env1/home挂载到容器的/home目录,主要为了数据持久化,这样容器里的/home目录的内容不会因为容器的消失而消失。
-p:端口映射,将宿主机的12306端口映射进容器的22端口,这样访问宿主机的12306端口等于访问容器的22端口。
—name=quectel:指定容器的名称
这时候使用docker ps可以看到容器已经启动:
容器命令
说明:有了镜像才可以创建容器,下载一个ubuntu镜像来学习
docker pull ubuntu:18.04 #下载镜像
启动并进入容器
➜ ~ docker run -it ubuntu:18.04 /bin/bash
root@48c509d4a292:/#
查看容器内的Ubuntu,基础版本很多命令都是不完善的
root@48c509d4a292:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@48c509d4a292:/#
列出所有运行中的容器
docker ps -a
退出容器
exit # 直接容器停止并退出
crtl + p + q #容器不停止退出
删除容器
docker rm 容器ID #删除指定的容器,不能删除正在运行的容器。除非强制删除rm -f
docker rm -f $(docker ps -aq) #删除所有的容器
启动和停止容器
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id
常见的其他的命令
命令 docker run -d 镜像名
docker run -d ubuntu:18.04
查看日志
docker logs
查看容器中的进程信息
进入当前正在运行的容器
从容器内拷贝文件到主机
创建ubuntu
Dockerfile
FROMubuntu:18.04
MAINTAINERneethan<lijun@standard-robots.com>
# COPY sources.list /etc/apt/ # 更换源操作,目前无其他合适的国内源,更换后会导致失败。
# COPY linux-2.6.34 /opt/linux-2.6.34/
RUN mkdir -p /workspace
RUN mkdir -p /data/toolchains/nvidia/tk1/v5.4
# 交叉编译工具链
COPY tdx-xwayland-rt-glibc-x86_64-Reference-Minimal-Image-rt-armv7at2hf-neon-apalis-tk1-toolchain-5.4.0.sh \
/data/toolchains/nvidia/tk1/v5.4
# 内核sdk
# COPY linux-toradex-toradex_5.4.y.tar.bz2 /workspace
# 暂不指定环境变量,因为发现设置source交叉工具链会报错<...you probably need to 'unset LD_LIBRARY_PATH'>
# ENV LIBRARY_PATH=/usr/local/lib
# ENV LD_LIBRARY_PATH=/usr/lib
RUN export LD_LIBRARY_PATH=/usr/local/lib
ENV WORK_PATH=/workspace
WORKDIR $WORK_PATH
RUN apt-getupdate
RUN apt-get install -y vim gcc g++
# menuconfig 依赖
RUN apt-get install -y ncurses-dev
# 解决arm-linux- 找不到
RUN apt-get install -y lsb-core
# mkimage 工具
RUN apt-get install -y u-boot-tools
# .autogen.sh 失败
RUN apt-get install -y autoconf automake libtool
RUN apt-get install -y lzop
RUN apt-get install -y lib32c-dev
# make_ext4fs libstdc++.so.6:
RUN apt-get install -y lib32stdc++6
# 安装ssh
RUN apt-get install -y openssh-server
RUN apt-get install -y net-tools
RUN apt-get install -y net-tools
RUN apt-get install -y libssl-dev
RUN apt-get install -y u-boot-tools
RUN apt-get install -y bc build-essential git libncurses5-dev lzop perl libssl-dev bison flex
RUN apt-get install -y python3-pip
RUN pip3 install pyyaml
RUN apt-get install -y gawk
RUN apt-get install -y cmake
RUN apt-get install -y liblapacke-dev checkinstall
# sros依赖,可选性安装
RUN apt-get install -y libboost-all-dev libopencv-dev \
cimg-dev qtdeclarative5-dev qt5-qmake libqglviewer-headers google-perftools \
libopenblas-dev libeigen3-dev sqlite3 unzip pkg-config curl \
software-properties-common libcurl4-openssl-dev
EXPOSE 80 22 8080
CMD echo "docker image build success!"
# 指定运行脚本
CMD /bin/bash
编译docker镜像
docker build -f ubuntu18.04.dockerfile -t ubuntu18.04:1.0 .
查看docker镜像
docker images
运行镜像
docker run -it ubuntu18.04:1.0
创建centos
Dockerfile
查看docker历史记录
docker history 镜像id
发布自己的镜像
发布到DockerHub
发布到阿里云
5.浏览阿里云
样例
编译内核
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu18.04 1.1 1ecb2470b73a 14 minutes ago 9.58GB
ubuntu18.04 1.0 84e64b604cc2 23 minutes ago 1.98GB
ubuntu 18.04 5a214d77f5d7 2 months ago 63.1MB
161.189.41.29:8082/sros/native latest 4a2faa33ab77 6 months ago 4.61GB
docker run -it —privileged=true -v ~/workspace2/standard-robots/tk1/sdk-v5.4/kernel:/workspace 1ecb2470b73a
命令解释:
docker run -it 运行docker终端
—privileged=true docker 挂载文件可编辑
~/workspace2/standard-robots/tk1/sdk-v5.4/kernel 主机路径, /workspace docker路径
1ecb2470b73a docker镜像ID
容器内部:
root@e5b9b511965a:/workspace/linux-toradex# cd linux-toradex
root@e5b9b511965a:/workspace/linux-toradex# . /data/toolchains/nvidia/tk1/v5.4/environment-setup-armv7at2hf-neon-tdx-linux-gnueabi
root@e5b9b511965a:/workspace/linux-toradex# make tegra_defconfig
root@e5b9b511965a:/workspace/linux-toradex# make -j15
设备树
root@e5b9b511965a:/workspace/linux-toradex# make DTC_FLAGS=”-@” tegra124-apalis-v1.2-eval.dtb
内核模块
root@e5b9b511965a:/workspace/linux-toradex# make -j$(nproc) modules
$ mkdir modules
$ export INSTALL_MOD_PATH=modules
$ make modules_install
$ cd modules
$ tar -czf ../modules.tar.gz .