Docker|部署及简单使用
环境: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|部署及简单使用的更多相关文章
- docker部署一个简单的mian.py项目文件
安装docker yum install -y docker 启动docker systemctl start docker 查询可安装的Python版本,默认centos python 2.7 ...
- jumperserver docker部署
最近在考虑 系统安全问题,jumperserver 用docker 部署比较简单1. 安装redis2.安装mariadb create database jumpserver charset='ut ...
- Windows Docker 部署 Spring Boot 项目
目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- Docker部署Hadoop集群
Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...
- Docker部署SDN环境
2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...
- 在生产环境使用Docker部署应用
导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...
- Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈
版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qclou ...
- Docker部署DVWA
上次在Docker手动配置了一个Ubuntu的Lamp镜像,这次来试验一下使用这个镜像部署一个简单的web应用吧. 首先从Lamp镜像运行一个容器 root@VM-149-127-debian:~/a ...
随机推荐
- ORACLE主键ID的生成
转自:https://blog.csdn.net/yh_zeng2/article/details/83477880 一般常用的方法有两种,使用Sequence和使用SYS_GUID(); 方法一 ...
- Http状态吗504问题复盘
原因分析:504错误一般与nginx.conf配置有关,主要参数有:fastcgi_connect_timeout.fastcgi_send_timeout.fastcgi_read_timeout. ...
- hadoop2.8 集群 1 (伪分布式搭建)
简介: 关于完整分布式请参考: hadoop2.8 ha 集群搭建 [七台机器的集群] Hadoop:(hadoop2.8) Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户 ...
- scrapy RuntimeError: maximum recursion depth exceeded while calling a Python object 超出python最大递归数异常
2019-10-21 19:01:00 [scrapy.core.engine] INFO: Spider opened2019-10-21 19:01:00 [scrapy.extensions.l ...
- RobotFramework+Eclipse的安装和配置(一)
最近想学robotframwork来做自动化,那立马就来开始上手 想动手,起码要先下载工具,工具及框架 工具介绍 Robotframework:一款自动化测试框架. Eclipse:一款编辑工具,可以 ...
- sql写法,子节点名称拼接上级节点名称
with T(id,[name],pid) as(select 1,N'中国',-1 union allselect 2,N'山东',1 union allselect 3,N'济南',2 union ...
- jeecg的开发api接口之旅(http)
一.接口测试工具 1.postman下载地址:https://download.csdn.net/download/qq_35792159/11898005 2.谷歌浏览器插件:https://www ...
- Go数据类型之复合数据类型--数组
3.1数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成.数组中每个元素类型相同,又是连续分配,因此可以以固定的速度索引数组中的任何数据,速度非常快. 3.1.1声明 ...
- Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict)
Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装和结构 #!/usr/bin/env pytho ...
- 一些SQL保存
因为两种Oracle数据库中对于结果行号的处理异同造成的. 在MSSQLServer中,可以使用top和ROW_NUMBER()方法的结合来实现,一般写法比较简单,而Oracle则有很大的不同. 只能 ...