docker极简指南(工作中知道这些就够了...)

1. 基于docker的工作流程

  • 在本地制作Docker镜像
  • 在本地运行并测试Docker镜像, 修改Docker镜像。循环,直到结果稳定。
  • 推送本地Docker镜像至仓库, 推送之后,所有的服务器都可以访问这个镜像

2. Docker 镜像制作

有两种方式制作Docker镜像

  • Dockerfile是推荐的方法,因为其可复制性,Dockerfile记录了每一步Docker镜像制作的方式。
  • docker commit也是可以选择的方式,但是不推荐。

3. Dockerfile示例

FROM ubuntu:16.04
RUN apt-get update
 
# INSTALL FFMPEG & OTHERS
RUN apt-get install -y unzip cmake g++ make ffmpeg libx264-dev wget
RUN apt-get install -y libavcodec-dev libavformat-dev libavdevice-dev
RUN apt-get install -y gcc g++ git libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev pkg-config cmake libgtk2.0-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavcodec-dev libavutil-dev libavfilter-dev libavformat-dev libavresample-dev libboost-all-dev libgflags-dev libgoogle-glog-dev libproj-dev protobuf-compiler libprotobuf-dev libblas-dev libhdf5-dev libopenblas-dev

# INSTALL PYTHON3
RUN apt-get install -y python3.5 python3-pip
 
# INSTALL PYTHON ENVIRONMENT
RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /root/mv3d/python3/requirements.txt

WORKDIR /root/mv3d/python3

4. 创建docker镜像

  • 基于dockerfile
cd ROOT_OF_WORKING
docker build -t registry.xx.yy/dockername:1.0.0 . # 注意最后有一个dot, 最后的dot表示当前工作目录,如果dockerfile中有COPY类似的命令,都是以该目录为基准

-t 指定一个docker tag也就是镜像名称
  • docker commit
    这种方式属于懒人的方法了,一般我们 docker run一个基础镜像,在进行安装依赖等操作,然后使用 “docker commit CONTAINERID registry.xx.yy/dockername:1.0.0 ” 的方式把正在运行的container保存为一个镜像。
    测试可以这么干,开发中用到的镜像这样做会被骂娘。

5. 启动docker

docker run \
--runtime=nvidia \
-ti  \
-p 50001:50000 \
-v $(pwd):/workspace \
-w /workspace \
--privileged \
registry.xx.yy/dockername:1.0.0

–runtime 指定 docker 使用的context, 如果需要使用GPU,需要指定nvidia, 或者使用nvidia-docker;
-p hostport:contianerport 端口映射;
-v hostdir:contianerdir 挂载文件夹
-w contianerdir 容器启动后cd到指定的目录
–privileged 特权模式,可以访问主机的所有设备,例如,CD-ROM、连接到主机的硬盘驱动器

6. 镜像命名 tag

给镜像起个别名,原来的镜像名还可以用,类似与linux的软连接或者c++中引用的意思。

docker tag registry.xx.yy/dockername:1.0.0   registry.xx.yy/dockername:latest

7. 推送镜像到远程仓库

打好镜像后,镜像是在本地存储的,也就是说只有本服务器可以使用,而且也有被删除、清理的风险
推送到远程镜像服务器后,大家才可以pull。

docker login registry.xx.yy      #登录镜像仓库,随后需要输入username和passwd
docker push registry.xx.yy/dockername:latest

##8.最后
docker 基于C/S架构, 我们一般用的docker是Client端, dockerd服务才是server端,主机上上所有运行的container都是由dockerd 服务管理。
容器编排涉及到的docker-compose、k8s 等都是基于docker的,都是对docker能力的封装。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白龙呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值