Docker

Docker 是一个开源的应用容器引擎,基于Go开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,不仅仅可以发布到任何流行的 Linux 机器上,也可以在Windows和MAC上安装,也可以实现虚拟化。容器是完全使用沙箱机制。
Docker 从 17.03(2017.03月) 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

image.png

1.17.0.3 版本以后变更版本发布策略,每个季度会发一个stable版本,每月会发edge版本,社区版本从发版本后维护四个月就会停止对版本的维护。

image.png

image.png

image.png
Docker引擎是一个c/s结构的应用
Server(docker daemon):常驻进程
REST API:实现了client和server间的交互协议
CLI:实现容器和镜像的管理,为用户提供统一的操作页面。

image.png

containerd:dockerd实际真实调用的还是containerd的api接口(rpc方式实现),containerd是dockerd和runc之间的一个中间交流组件

docker-shim:是一个真实运行的容器的真实垫片载体,每启动一个容器都会起一个新的shim进程,它直接通过指定的三个参数:容器id,boundle目录,运行时二进制(默认为runc)来调用runc的api创建一个容器。

runc:是一个命令行工具端,他根据oci(开放容器组织)的标准来创建和运行容器。实现了容器启停、资源隔离等功能。Docker默认提供了docker-runc实现,事实上,通过containerd的封装,可以在Docker Daemon启动的时候指定runc的实现。

image.png

1 安装部署

第一步 删除旧的版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
                  
第二步 配置yum源
安装yum工具: yum install -y yum-utils 
下载docker-ce yum源: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

第三步 执行安装
查看所有版本:yum list docker-ce --showduplicates | sort -r
指定版本安装: yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

systemctl enable docker
systemctl start docker 

第四步 配置镜像仓库
1. Docker安装完成以后,在/etc/docker/目录下执行
cat > daemon.json << EOF
{
   "insecure-registries": [“10.180.210.196"]
}
EOF
systemctl restart docker 重启启动docker时配置生效

2. 登录harbor仓库
   docker login 10.180.210.196 然后根据提示输入用户名:admin,密码:Harbor12345
复制代码

2 Docker镜像制作

FROM: 引用基础镜像
            格式:FROM [--platform=<platform>] <image>[:<tag>] [AS <name>] 
            通过公有仓库或私有仓库拉取镜像,platform标识系统架构:linux/amd64, linux/arm64, or windows/amd64。
RUN:执行命令
          两种格式:RUN <command> (/bin/sh -c on Linux or cmd /S /C on Windows)
                           RUN ["executable", "param1", "param2"] (exec form)
          示例:RUN  mkdir /test \
                              touch /test/hello   #多条命令可以使用 \换行连接
ENV:设置环境变量
          两种格式:ENV <key> <value>
                           ENV <key1>=<value1> <key2>=<value2> ...
           示例:ENV myName John 
                     ENV myCat fluffy       或者 ENV myName=John  myCat=fluffy 
EXPOSE: 指定容器运行时监听的端口
            格式:EXPOSE <port> [<port>/<protocol>...] #默认为tcp协议
            示例:EXPOSE 80/tcp  
                      EXPOSE 80/udp
ADD:将文件从本地或URL中添加到镜像文件系统,本地文件必须在上下文(Dockerfile)的当前目录或子目录。
      格式:ADD [--chown=<user>:<group>] <src>... <dest>
                ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
       示例:ADD test.tar.gz /    #自动解压
COPY:和ADD指令功能相似,但缺少两个功能点(不能从URL中添加文件,不能自动解压)

CMD:容器启动命令
        格式:CMD ["executable","param1","param2"] (exec form, this is the preferred form)
                  CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
                  CMD command param1 param2 (shell form)

ENTRYPOINT:容器启动的入口点
         格式:ENTRYPOINT ["executable", "param1", "param2"] (exec form, preferred)
	    ENTRYPOINT command param1 param2 (shell form)                  
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享