Docker使用总结

Posted 流子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker使用总结相关的知识,希望对你有一定的参考价值。

Docker 简介
什么叫Docker?
Docker 是一个能够把开发的应用程序自动部署到容器的开源引擎。也就是说Docker跟Vmware等虚拟机软件相比,它是开源的。
在这里插入图片描述

Docker的技术组件
一个原生的Linux容器格式,Docker中称为libcontainer
Linux内核的命名空间(namespace),用于隔离文件系统、进程和网络
文件系统隔离:每个容器都有自己的root系统
进程隔离: 每个容器都运行在自己的进程环境中
网络隔离: 容器间的虚拟网络接口和IP地址都是分开的
资源隔离与分组: 使用cgroups(即 control group,Linux的特性之一)将CPU和内存之类的资源独立分配给每个Docker容器
写时复制: 文件系统都是通过写时复制创建的,这就意味着文件系统是分层的、快速的,而且占用的磁盘空间更小
日志:容器产生的STDOUT、STDERR和STDIN这些IO流都会被收集并计入日志,用来进行日志分析和故障排错。
交互式shell: 用户可以创建一个伪tty终端,将其连接到STDIN,为容器提供一个交互式的shell
其中:STDOUT为标准输出流,STDERR为错误输出流,STDIN为标准输入流

下面我们来介绍docker指令的使用

Dockerfile -t

ADD指令

是将主机构建环境(上下文)目录中的文件和目录、以及一个URL标记的文件 拷贝到镜像中。

其格式是: ADD 源路径 目标路径

ADD . /cnc/run
ADD /prometheus/prometheus-jmx-config.yaml /cnc/run/prometheus-jmx-config.yaml
ADD /prometheus/jmx_prometheus_javaagent-0.13.0.jar /cnc/run/jmx_prometheus_javaagent-0.13.0.jar

Dockerfile 编写规范

#引用基础镜像
FROM ccr.ccs.tencentyun.com/jiangguilong/kona-jdk8:1.0
#记录作者信息
MAINTAINER jiangguilong jiangguilong@gamioo.io
#将本地的nginx.tar.gz 包添加至/usr/local/目录,tar.gz 会自动解压,根据自身需求定制
ADD nginx.tar.gz /usr/local
#创建目录
RUN mkdir -p /data/server
# 对外暴露9527端口
EXPOSE 9527
#安装常用软件或者依赖软件
RUN yum install  lrzsz -y
RUN yum install vim -y
#创建环境变量
ENV NACHOS_IP=${NACHOS_IP} \\
    ZONE_ID=${ZONE_ID} \\
    DEPLOY_ENV=${DEPLOY_ENV}

ENTRYPOINT ["/bin/bash", "start.sh"]

docker 指令

​docker version
systemctl status docker
docker info
#拉取镜像
docker pull 
docker pull 下来的命令都默认存在 /var/lib/docker/文件夹下

#查看本地镜像,主要是找到image ID,后面要用

docker images
REPOSITORY                                                                   TAG               IMAGE ID       CREATED         SIZE
ccr.ccs.tencentyun.com/ooxx/kona-jdk8                                        1.0               88e47d5b009a   2 months ago    569MB

登陆自己的docker 私人仓库

sudo docker login --username=100014139498 ccr.ccs.tencentyun.com

制作镜像

docker build -f Dockerfile -t ccr.ccs.tencentyun.com/jiangguilong/gamioo:1.0 robot

如果制作出来的镜像有问题,可以把docker镜像保存到本地

docker image save -o robot.tar  ccr.ccs.tencentyun.com/jiangguilong/gamioo:1.0

删除过多的镜像,如果强制删除要加-f

docker rmi a3dd80a05a57

Untagged: ccr.ccs.tencentyun.com/jiangguilong/gamioo:5.0
Untagged: ccr.ccs.tencentyun.com/jiangguilong/gamioo@sha256:5c38c45520b5dd0a8d3451a23c7764473b4728edfb2ef8122e551c92e5d494a1
Deleted: sha256:a3dd80a05a57b9abdb0b1e21f3f84647f4e041f85a0f9aeec798794f71a0ec8b
Deleted: sha256:defd57fbbd2c35682a8aa61bf421e0628c4ccfcdd6ed22ad1938538826b871fd
Deleted: sha256:36062a72f42151cc22aefd75540fecbe37523f0a47feb03ce2e1b7a621efd154

如果要定时删除过期镜像,可以提供个脚本

#!/bin/bash
#用于删除过期的镜像数据
for i in $(## 查看cnc-game镜像的,保留最近10条数据,提取出镜像id
  docker images | grep -v "IMAGE" | grep 'cnc-game' | tail -n +10 | awk '{print $3}'
); do
  {
    docker rmi -f $i &>/dev/null ##删除镜像
    echo "docekr delete $i complete"
  } &
done
wait
echo -e "\\e[1;31mdelete complete \\e[0m"

打上远程仓库标签

#sudo docker tag [ImageId] ccr.ccs.tencentyun.com/jiangguilong/kona-jdk8:[tag]
sudo docker tag 88e47d5b009a ccr.ccs.tencentyun.com/jiangguilong/kona-jdk8:1.0

推送至镜像仓库

#sudo docker push ccr.ccs.tencentyun.com/jiangguilong/kona-jdk8:[tag]
sudo docker push ccr.ccs.tencentyun.com/jiangguilong/kona-jdk8:1.0

The push refers to repository [ccr.ccs.tencentyun.com/jiangguilong/kona-jdk8]
d76a4ac4667b: Pushed 
08fc1ae4f140: Pushed 
2683371c0f7f: Pushed 
174f56854903: Pushed 
1.0: digest: sha256:7f5352ffcce1e21e5056c747c258ef7a87287697964b4225de624546dbed1885 size: 1161

到后台确认:
在这里插入图片描述
查看镜像历史

docker history 8e7f2f9cafba --no-trunc=true

IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
fd7a89d6641f   34 minutes ago   /bin/sh -c #(nop)  ENTRYPOINT ["/bin/bash" "…   0B        
a94521afcf87   34 minutes ago   /bin/sh -c #(nop) ADD dir:9f2bc86807842d3d57…   22.2MB    
3d204876ff8e   11 hours ago     /bin/sh -c #(nop)  MAINTAINER jiangguilong j…   0B        
88e47d5b009a   2 months ago     /bin/sh -c #(nop)  ENV JAVA_HOME=/opt/java/T…   0B        
2ff8c2c35c44   2 months ago     /bin/sh -c #(nop) ADD file:0db09375a72868034…   230MB     
da52ac2f60d7   2 months ago     /bin/sh -c mkdir -p /opt/java/                  0B        
f22ea73f6d52   2 months ago     /bin/sh -c #(nop)  ENV JAVA_VERSION=jdk8u272…   0B        
cb133e52af7a   2 months ago     /bin/sh -c yum install -y tzdata openssl cur…   135MB     
af2b8e849654   2 months ago     /bin/sh -c #(nop)  ENV LANG=en_US.UTF-8 LANG…   0B        
8652b9f0cb4c   7 months ago     /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      7 months ago     /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B        
<missing>      7 months ago     /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4…   204MB  

获取容器/镜像的metadata元数据,这里能看到所有信息

 docker inspect ccr.ccs.tencentyun.com/jiangguilong/gamioo:19.0

参考:
Docker 从入门到实践

以上是关于Docker使用总结的主要内容,如果未能解决你的问题,请参考以下文章

BootStrap有用代码片段(持续总结)

BootStrap实用代码片段(持续总结)

回归 | js实用代码片段的封装与总结(持续更新中...)

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

docker的学习总结

查看发票组代码后的总结和有感