环境:VMware + centos7 + docker17.05.0

一、安装docker

1、修改ifcfg-ens33

配置虚拟机的网络,保证可以正常联网

命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改:ONBOOT=yes

命令:systemctl restart network.service

1、更新yum包

命令:yum update

2、添加yum的Docker包仓库

命令:vi /etc/yum.repos.d/docker.repo

内容:

[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

3、安装docker引擎

命令:yum install docker-engine

4、启动docker引擎

命令:service docker start

5、查看docker版本号

命令:docker version

二、docker简单使用

1、拉取镜像

命令:docker pull centos

从公有的镜像注册中心下载镜像,后面我们会构建私有的注册中心,用于管理团队内部的镜像

2、查看镜像

命令:docker images

3、创建容器

命令:docker run -i -t centos /bin/bash

运行centos镜像生成容器,并进入容器,输入exit指令可以退出

4、其他容器相关命令

查看:docker ps -a

CONTAINER_ID是容器的唯一标识,后面关闭、重启、删除都会用到

关闭:docker stop  42efdf85af21

重启:docker restart 42efdf85af21

删除:docker rm 42efdf85af21

三、构建镜像

1、通过容器生成镜像

命令:docker commit 42efdf85af21 jyy/centos

将上面的容器重新生成一个名为“jyy/centos”的镜像

命令:docker images

2、使用Dockerfile构建镜像

构建一个centos镜像,并在镜像里面配置jdk,同时可以查看jdk版本

1)下载linux版本的jdk文件,放在任意目录下

2)并在同一目录下,创建Dockerfile文件

内容:

FROM centos:latest                            --来自哪个镜像
MAINTAINER "jyy"<xxx@xxx.com>    --创建者信息
ADD jdk-8u201-linux-x64.tar.gz /opt    --拷贝jdk到镜像中的/opt目录,并解压
ENV JAVA_HOME /opt/jdk1.8.0_201   --设置JAVA_HOME
ENV PATH $JAVA_HOME/bin:$PATH  --设置环境变量
CMD java -version                                --输出java版本

3)构建镜像

命令:docker build -t jyy/centos-jdk .

使用-t选项来指定镜像的名称,并读取当前目录(即.目录)中的Dockerfile文件

命令:docker images

命令:docker run jyy/centos-jdk

四、配置私有registry

1、运行registry镜像

命令:docker run -d -p 5000:5000 --restart=always --name registry registry:2

2、上传镜像

命令:docker pull ubuntu:16.04

命令:docker tag ubuntu:16.04 localhost:5000/my-ubuntu

将“ubuntu:16.04”更名为“localhost:5000/my-ubuntu”

命令:docker push localhost:5000/my-ubuntu

上传镜像

可以在浏览器中查看上传结果:

命令:docker image remove ubuntu:16.04

docker image remove localhost:5000/my-ubuntu

移除本地ubuntu镜像

命令:docker pull localhost:5000/my-ubuntu

从私有registry上获取my-ubuntu镜像

以上内容,构建了一个简单的镜像中心,但是只能内部访问,显然这不能满足实际的生产需要,所以我们需要继续构建一个可以外部访问的镜像中心。

一个可以外部访问的镜像中心需要使用TLS进行安全加固。

1)我们使用openssl生成证书,在生成证书之前,需要修改一个配置,否则会报出如下错误:

x509: cannot validate certificate for <ipaddress> because it doesn't contain any IP SANs

命令:vi /etc/pki/tls/openssl.cnf

修改内容:ip地址为本地地址

[ v3_ca ]
subjectAltName=IP:192.168.186.128

2)生成证书

命令:mkdir certs

cd certs

openssl genrsa -out domain.key 2048

openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt

3)将生成的私有证书追加到系统的管理证书中,否则会报出如下错误:

x509: certificate signed by unknown authority

命令:cat domain.crt >> /etc/pki/tls/certs/ca-bundle.crt

重启服务:systemctl restart docker

4)运行镜像,在证书的上层目录下执行

命令:

docker run -d \
--restart=always \
--name registry \
-v "$(pwd)"/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-p 443:443 \
registry:2

5)上传本地镜像

命令:docker tag localhost:5000/my-ubuntu 192.168.186.128:443/my-ubuntu

docker push 192.168.186.128:443/my-ubuntu

上传成功!!!

6)在另一台docker客户端上,上传镜像到镜像中心

命令:docker tag centos 192.168.186.128:443/centos

docker push 192.168.186.128:443/centos

会抛出如下错误:

x509: certificate signed by unknown authority

同上,将证书拷贝一份,再追加到系统的管理证书中即可

命令:scp root@192.168.186.128:/etc/docker/certs/domain.crt /etc/docker/certs/

cat domain.crt >> /etc/pki/tls/certs/ca-bundle.crt

重启服务:systemctl restart docker

docker push 192.168.186.128:443/centos

上传成功!!!

参考网址:https://docs.docker.com/registry/deploying/

Docker|部署及简单使用的更多相关文章

  1. docker部署一个简单的mian.py项目文件

    安装docker yum install -y docker  启动docker systemctl start docker   查询可安装的Python版本,默认centos python 2.7 ...

  2. jumperserver docker部署

    最近在考虑 系统安全问题,jumperserver 用docker 部署比较简单1. 安装redis2.安装mariadb create database jumpserver charset='ut ...

  3. Windows Docker 部署 Spring Boot 项目

    目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...

  4. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  5. Docker部署Hadoop集群

    Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...

  6. Docker部署SDN环境

    2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...

  7. 在生产环境使用Docker部署应用

    导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...

  8. Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈

    版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qclou ...

  9. Docker部署DVWA

    上次在Docker手动配置了一个Ubuntu的Lamp镜像,这次来试验一下使用这个镜像部署一个简单的web应用吧. 首先从Lamp镜像运行一个容器 root@VM-149-127-debian:~/a ...

随机推荐

  1. Oracle 11g 服务器结构

    Oracle 服务器主要又实例.数据库.程序全局区和前台进程组成. 实例可以进一步划分为系统全局区(SGA)和后台进程(PMON.SMON等)两部分,其中,SGA 使用操作系统的内存资源,而后台进程需 ...

  2. python字符串的常见方法

    1.join方法:拼接字符串------->str a = "你是风儿我是沙"b = "@".join(a)print(b)>>>你@是 ...

  3. MQTT的websockets应用_转

    转自:mosquitto 与websocket 的结合 前言 mosquitto 作为一个消息代理, 客户端与 mosquitto 服务端的通信时基于 MQTT 协议的, 而现在的主流 web 应用时 ...

  4. 基于yum的方式安装Cloudera Manager Server(使用Mysql 8.0版本)

    基于yum的方式安装Cloudera Manager Server(使用Mysql 8.0版本) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装和配置元数据库 1>. ...

  5. 阿里巴巴开源性能监控神器Arthas jvm

    原文:https://www.cnblogs.com/testfan2019/p/11038791.html 如果问性能测试中最难的是哪部分,相信很多人会说“性能调优”.确实是这样,性能调优是一个非常 ...

  6. 登录-redis

    session的问题 目前session直接是js变量,放在nodejs进程内存中 1.进程内存有限,访问量过大,内存暴增怎么办? 2.正式线上运行是多进程,进程之间内存无法共享 为何session适 ...

  7. tensorflow与神经网络中遇到的问题与解决方法【持续更新】

    1.如何在全连接层拼接特征? 有一种方法是有两个input,一个input通过网络最终达到全连接层,另一个input直接接一个全连接网络,神经元数是特征数,这两个可以进行一个concat.  当然了也 ...

  8. springboot学习笔记(一)

    springboot案例(一) Application.java package com.xdr.spring; import org.springframework.boot.SpringAppli ...

  9. 开发搭建环境之springboot配置logback日志管理

    首先书写logback-spring.xml文件为: <?xml version="1.0" encoding="UTF-8"?><confi ...

  10. 《转》BAT批处理教程

    第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以 ...