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使用总结的主要内容,如果未能解决你的问题,请参考以下文章