bluetoothlover_doc icon indicating copy to clipboard operation
bluetoothlover_doc copied to clipboard

[OS] docker 使用

Open supperthomas opened this issue 4 years ago • 38 comments

supperthomas avatar Jun 24 '21 07:06 supperthomas

嵌入式有哪些应用场景。

supperthomas avatar Aug 29 '21 14:08 supperthomas

回顾一下Docker历史 https://blog.csdn.net/u014421520/article/details/120172428

xupenghu avatar Sep 08 '21 01:09 xupenghu

Docker 在centos和WSL2 下的安装教程 https://blog.csdn.net/u014421520/article/details/120172516

xupenghu avatar Sep 08 '21 01:09 xupenghu

Dockerfile的使用 https://blog.csdn.net/u014421520/article/details/120248498

xupenghu avatar Sep 12 '21 03:09 xupenghu

Docker常用命令 https://blog.csdn.net/u014421520/article/details/120248405?spm=1001.2014.3001.5502

xupenghu avatar Sep 12 '21 03:09 xupenghu

Docker容器数据卷 https://blog.csdn.net/u014421520/article/details/120248472?spm=1001.2014.3001.5502

xupenghu avatar Sep 12 '21 03:09 xupenghu

Dokce镜像的理解 https://blog.csdn.net/u014421520/article/details/120248419?spm=1001.2014.3001.5502

xupenghu avatar Sep 12 '21 03:09 xupenghu

@supperthomas 研究一下docker 如何使用

supperthomas avatar Sep 28 '21 13:09 supperthomas

ocker 极简入门指南,10 分钟就能看懂~

https://mp.weixin.qq.com/s/ueD5htayKhCnzQ5C4ngJqQ

supperthomas avatar Oct 05 '21 17:10 supperthomas

  1. docker volume ls 显示挂在的目录

supperthomas avatar Oct 28 '21 13:10 supperthomas

issue: docker pull 下载太慢了

supperthomas avatar Oct 28 '21 13:10 supperthomas

TODO: 写一个dockerfile 构建RTTHREAD dockerfile: 所有指令都是大写: docker build -f dockerfile

supperthomas avatar Oct 28 '21 13:10 supperthomas

FROM ubuntu

VOLUME ["volume01","volume02"]

CMD echo "--------hello world---------"

CMD /bin/bash


docker build -f dockerfile -t thomas . 路径不要忘记了

supperthomas avatar Oct 28 '21 13:10 supperthomas

到这里,恭喜你已经完成了 Docker 的入门项目!如果还想继续深入,不妨接着往下看看。

1.参数使用

FROM

指定基础镜像,所有构建的镜像都必须有一个基础镜像,且 FROM 命令必须是 Dockerfile 的第一个命令

FROM [AS] 指定从一个镜像构建起一个新的镜像名字

FROM [:] [AS ] 指定镜像的版本 Tag

示例:FROM mysql:5.0 AS database

MAINTAINER

镜像维护人的信息

MAINTAINER

示例:MAINTAINER Jartto [email protected]

RUN

构建镜像时要执行的命令

RUN

示例:RUN [“executable”, “param1”, “param2”]

ADD

将本地的文件添加复制到容器中去,压缩包会解压,可以访问网络上的文件,会自动下载

ADD

示例:ADD *.js /app 添加 js 文件到容器中的 app 目录下

COPY

功能和 ADD 一样,只是复制,不会解压或者下载文件

CMD

启动容器后执行的命令,和 RUN 不一样,RUN 是在构建镜像是要运行的命令

当使用 docker run 运行容器的时候,这个可以在命令行被覆盖

示例:CMD [“executable”, “param1”, “param2”]

ENTRYPOINT

也是执行命令,和 CMD 一样,只是这个命令不会被命令行覆盖

ENTRYPOINT [“executable”, “param1”, “param2”]

示例:ENTRYPOINT [“donnet”, “myapp.dll”]

LABEL:为镜像添加元数据,key-value 形式

LABEL = = ...

示例:LABEL version=”1.0” description=”这是一个web应用”

ENV:设置环境变量,有些容器运行时会需要某些环境变量

ENV =一次设置一个环境变量

ENV = = = 设置多个环境变量

示例:ENV JAVA_HOME /usr/java1.8/

EXPOSE:暴露对外的端口(容器内部程序的端口,虽然会和宿主机的一样,但是其实是两个端口)

EXPOSE

示例:EXPOSE 80

容器运行时,需要用 -p 映射外部端口才能访问到容器内的端口

VOLUME:指定数据持久化的目录,官方语言叫做挂载

VOLUME /var/log 指定容器中需要被挂载的目录,会把这个目录映射到宿主机的一个随机目录上,实现数据的持久化和同步。 VOLUME [“/var/log”,”/var/test”…..] 指定容器中多个需要被挂载的目录,会把这些目录映射到宿主机的多个随机目录上,实现数据的持久化和同步 VOLUME /var/data var/log 指定容器中的 var/log 目录挂载到宿主机上的 /var/data 目录,这种形式可以手动指定宿主机上的目录 WORKDIR:设置工作目录,设置之后 ,RUN、CMD、COPY、ADD 的工作目录都会同步变更 WORKDIR 示例:WORKDIR /app/test USER:指定运行命令时所使用的用户,为了安全和权限起见,根据要执行的命令选择不同用户 USER :[]

示例:USER test

ARG:设置构建镜像是要传递的参数

ARG [=]

ARG name=sss

supperthomas avatar Oct 28 '21 14:10 supperthomas

TOPIC: 如何写dockerfile https://abcnull.blog.csdn.net/article/details/107902346

arm-none-eabi-gcc scons menuconfig needed libraries vscode remote support RTT_EXEC_PATH env variable for rtconfig.py

supperthomas avatar Oct 28 '21 14:10 supperthomas

代码放外面

supperthomas avatar Oct 28 '21 15:10 supperthomas

      pip install requests -qq
      python -c "import tools.menuconfig; tools.menuconfig.touch_env()"
      echo "RTT_ROOT=${{ github.workspace }}" >> $GITHUB_ENV
      echo "RTT_CC=gcc" >> $GITHUB_ENV

supperthomas avatar Oct 28 '21 16:10 supperthomas

在线play docker https://labs.play-with-docker.com/

supperthomas avatar Oct 29 '21 01:10 supperthomas

docker 后台执行: ctrl+p 再按ctrl+q

恢复 docker attach [container]

supperthomas avatar Oct 29 '21 02:10 supperthomas

docker 如何push到docker hub

docker commit -m "add code" eb8bced32f05 new-repo:tagname
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname

supperthomas avatar Oct 29 '21 05:10 supperthomas

四、清理镜像

我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理: `docker images prune 它支持的子命令有:

-a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;
-f, --force:强制删除镜像文件,无需弹出提示确认;

supperthomas avatar Oct 29 '21 15:10 supperthomas

#
# NuttX development environment
#

FROM ubuntu:xenial
MAINTAINER David Sidrane <[email protected]>

ENV DEBIAN_FRONTEND noninteractive

RUN dpkg --add-architecture i386 \
	&& apt-get update \
	&& DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \
		bison \
		bzip2 \
		ca-certificates \
		ccache \
		cmake \
		file \
		flex \
		g++ \
		gcc \
		genromfs \
		git \
		gosu \
		gperf \
		libc6:i386 \
		libgcc1:i386 \
		libncurses-dev \
		libstdc++5:i386 \
		libstdc++6:i386 \
		make \
		ninja-build \
		patch \
		python \
		sudo \
		unzip \
		wget \
	&& apt-get -y autoremove \
	&& apt-get clean autoclean \
	# astyle v2.06
	&& wget https://downloads.sourceforge.net/project/astyle/astyle/astyle%202.06/astyle_2.06_linux.tar.gz -O /tmp/astyle.tar.gz \
	&& tar -xvf /tmp/astyle.tar.gz && cd astyle/src && make -f ../build/gcc/Makefile && cp bin/astyle /usr/local/bin && cd .. && rm -rf astyle \
	# manual ccache setup
	&& ln -s /usr/bin/ccache /usr/lib/ccache/cc \
	&& ln -s /usr/bin/ccache /usr/lib/ccache/c++ \
	# cleanup
	&& rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/*

RUN git clone --depth 1 https://bitbucket.org/nuttx/tools.git /tmp/tools; \
    cd /tmp/tools/kconfig-frontends; \
    ./configure --enable-mconf -prefix=/usr; \
    make; \
    make install; \ 
    rm -rf /tmp/*

# GCC 5.4
RUN mkdir -p /opt/gcc && cd /opt/gcc && \
    wget -qO- https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q3-update/+download/gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2 | tar jx --strip 1 && \
    rm -rf /opt/gcc/share/doc; \
    ln -s /usr/bin/ccache /usr/lib/ccache/arm-none-eabi-g++; \
    ln -s /usr/bin/ccache /usr/lib/ccache/arm-none-eabi-gcc

ENV CCACHE_CPP2=1
ENV CCACHE_MAXSIZE=1G
ENV DISPLAY :0
ENV PATH "/usr/lib/ccache:/opt/gcc/bin:$PATH"
ENV TERM=xterm

# create and start as LOCAL_USER_ID
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

CMD ["/bin/bash"]

supperthomas avatar Oct 29 '21 15:10 supperthomas

官方docker教程:https://training.play-with-docker.com/

supperthomas avatar Nov 04 '21 01:11 supperthomas

目前掌握dockerfile。https://github.com/supperthomas/Dockerfiles

supperthomas avatar Nov 07 '21 12:11 supperthomas

发布自己的镜像到docker hub

  1. 首先需要给自己的镜像打一个tag,
# docker tag esp32_adf_build:0.1 hubertxxu/esp32_adf_build:latest
  1. 然后push到docker hub
docker push hubertxxu/esp32_adf_build:latest

如果直接push会报错,因为自己做的docker镜像是没有加docker hub的用户名的。

xupenghu avatar Nov 16 '21 02:11 xupenghu

docker 从入门到精通 https://vuepress.mirror.docker-practice.com/

supperthomas avatar Nov 16 '21 13:11 supperthomas

Dockerfile最佳实践 https://vuepress.mirror.docker-practice.com/appendix/best_practices/

hyhkjiy avatar Nov 17 '21 04:11 hyhkjiy

数据卷使用: docker run -it -v 宿主机绝对路径目录: /容器内目录 镜像名

supperthomas avatar Nov 21 '21 09:11 supperthomas

docker run -it -w /root/rtthread -v /f/04_git_repo/GITEE/test/rt-thread_github:/root/rtthread lt6210925/rtthread

supperthomas avatar Nov 21 '21 10:11 supperthomas

docker跑起来还是挺耗资源的

supperthomas avatar Nov 22 '21 13:11 supperthomas