docker容器打包成镜像并导出 docker 镜像导出成tar包_linux

 

Docker 引擎的安装
     基础环境配置
         (1)提供的压缩包解压
             tar -zxvf Docker.tar.gz
         (2)配置本地 YUM 源
             cat /etc/yum.repod.s/local.repo [kubernetes] 
             name=kubernetes baseurl=file:///root/Docker
             gpgcheck=0 
             enabled=1
         (3)升级系统内核
             yum upgrade -y
             uname -r
         (4)配置防火墙及 SELinux
             systemctl stop firewalld && systemctl disable firewalld
             iptables -t filter -F
             iptables -t filter -X
             iptables -t filter -Z
             /usr/sbin/iptables-save
             sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
             reboot
         (5)开启路由转发
              cat >> /etc/sysctl.conf << EOF
             net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
             modprobe br_netfilter
             sysctl -p
     Docker 引擎安装
         (1)安装依赖包
             yum install -y yum-utils device-mapper-persistent-data
         (2)安装 docker-ce
             yum install docker-ce-18.09.6 docker-ce-cli-18.09.6 containerd.io -y
         (3)启动 Docker
             systemctl daemon-reload
             systemctl restart docker
             systemctl enable docker
         (4)查看 Docker 的系统信息
             docker infoDocker 镜像和容器的使用
     镜像的基本管理和使用
         (1)查看镜像列表
              ./image.sh
             docker images
         (2)运行容器
             docker run -i -t -d httpd:2.2.31 /bin/bash
         (3)查找镜像
             docker search --filter=stars=10 java
              --automated:只列出 automated build 类型的镜像。
              --no-trunc:显示完整的镜像描述。
              --filter=stars:列出收藏数不小于指定值的镜像.
         (4)从容器创建一个新的镜像
             # docker commit -a "xiandian" -m "nginx-test" 5d42a9fafeb6 nginx:v1 
     docker命令
         (1)docker tag 语法
             docker tag IMAGE:TAG/]REPOSITORY[:TAG]
         (2)docker images
             REPOSITORY:表示镜像的仓库源。
             TAG:镜像的标签。
             IMAGE ID:镜像 ID。
             CREATED:镜像创建时间。
             SIZE:镜像大小。
         (3)docker run
              -i:交互式操作。
              -t:终端。
              -d:后台运行。
              httpd:2.2.31:镜像名,使用 https:2.2.31 镜像为基础来启动容器。
              /bin/bash:容器交互式 Shell。
         (4)获取镜像语法
             docker pull [OPTIONS] NAME[:TAG|@DIGEST]
         (5)查找镜像
              docker search [OPTIONS] TERM
         (6)删除镜像
              docker rmi [OPTIONS] IMAGE [IMAGE...]
             -f:强制删除。
              --no-prune:不移除该镜像的过程镜像,默认移除。
         (7)启动容器
             docker start [CONTAINER ID]
         (8)列出所有容器(包含终止状态)
             docker ps -a
         (9)查看具体容器的信息
             docker inspect [container ID or NAMES]
         (10)查看容器的使用资源状况
             docker stats [container ID or NAMES]
         (11)进入容器
              docker exec -it [CONTAINER ID] bash
         (12)删除终止状态的容器
             docker rm [CONTAINER ID]
         (13)删除运行中的容器
             docker rm -f [CONTAINER ID]
         (14)导入/导出容器
             docker export [CONTAINER ID] > [tar file]
             cat [tar file] | docker import - [name:tag]
         (15)将镜像保存为文件
             docker save -o [tar file] IMAGE
         (16)从容器创建一个新的镜像
             docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
             -a:提交的镜像作者
             -c:使用 Dockerfile 指令来创建镜像
             -m:提交时的说明文字
             -p:在 commit 时,将容器暂停
     Dockerfile
         docker build 命令构建新镜像
             docker build -t="centos-jdk" .
         FROM:指定基础镜像,必须为第一个命令。
         MAINTAINER:维护者信息。
         RUN:构建镜像时执行的命令。
         ADD:将本地文件添加到容器中,tar 类型文件会自动解压(网络压缩资源不会被解 压),可以访问网络资源,类似 wget。
         COPY:功能类似 ADD,但是是不会自动解压文件,也不能访问网络资源。
         CMD:构建容器后调用,也就是在容器启动时才进行调用。
         ENTRYPOINT:配置容器,使其可执行化。配合 CMD 可省去“application”,只使 用参数。
         LABEL:用于为镜像添加元数据。
         ENV:设置环境变量。
         EXPOSE:指定与外界交互的端口。
         VOLUME:用于指定持久化目录。
         WORKDIR:工作目录,类似于 cd 命令。Docker 仓库的使用(registry版)
     构建私有仓库
         (1)在搭建好docker的环境下运行 Registry仓库
             ./image.sh
             docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
         (2)查看运行情况
             docker ps
     私有仓库的使用
         (1)上传镜像
             cat /etc/docker/daemon.json
             { "insecure-registries": ["10.18.4.30:5000"] }
             systemctl restart docker
         (2)为镜像打上标记
             docker tag centos:latest 10.18.4.30:5000/centos:latest
         (3)上传标记的镜像
             docker push 10.18.4.30:5000/centos:latest
         (4)curl 命令查看仓库中的镜像
             curl -L http://10.18.4.30:5000/v2/_catalog
         (5)拉取镜像
             docker pull 10.18.4.30:5000/centos:latestDocker 仓库(Harbor版)
     构建https证书
         (1)生成 CA 证书 
             mkdir -p /data/ssl
             cd /data/ssl/
             openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 2.235 -out ca.crt
         (2)生成证书签名请求
             openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.yidaoyun.com.key -out www.yidaoyun.com.csr
         (3)生成注册表主机的证书
             openssl x509 -req -days 2.235 -in www.yidaoyun.com.csr -CA ca.crt 10 -CAkey ca.key -CAcreateserial -out www.yidaoyun.com.crt
         (4)分发证书
              cp -rfv www.yidaoyun.com.crt /etc/pki/ca-trust/source/anchors/
             update-ca-trust enable
             update-ca-trust extract
     安装 docker-compose
         mv docker-compose /usr/local/bin/
         chmod +x /usr/local/bin/docker-compose
         docker-compose --version
     安装Harbor仓库
         (1)下载 Harbor 安装包
             tar -zxvf harbor-offline-installer-v1.5.3.tgz -C /opt/
         (2)进入到 harbor 目录
             cd /opt/harbor/
         (3)编辑配置文件
             vi harbor.cfg
             hostname = 10.24.2.37 #修改 harbor 的启动 ip,这里需要依据系统 ip 设置
             ui_url_protocol = https #启用加密传输协议 https
             ssl_cert = /data/ssl/www.yidaoyun.com.crt #证书的位置
             ssl_cert_key = /data/ssl/www.yidaoyun.com.key #证书密钥位置
     镜像管理与安全
         (1)配置本地 deamon.json 文件
             { "registry-mirrors": ["https://5twf62k1.mirror.aliyuncs.com"], "insecure-registries": ["10.24.2.37"] }
             systemctl restart docker
         (2)重新启动 Harbor 私有镜像仓库
              ./prepare 
         (3)清理所有 Harbor 容器进程
             cd /opt/harbor
             docker-compose down
             docker-compose up -d
         (4)上传镜像 
             docker tag centos:latest 10.24.2.37/library/centos:latest
             docker login https://10.24.2.37
             docker push 10.24.2.37/library/centos:latest
         (5)重新启用漏洞扫描
             ./ --with-notary --with-clair