docker 入门操作与本地厂库
docker 自诞生以来就是业内讨论得很火的一个话题,讨论程度仅此于openstack,后期应该会持续更新一些关于docker的内容:
docker是什么:简单来说docker 是软件工业的集装箱技术,可以实现相互隔离快速打包部署功能。
docker的安装和基本命令:
环境:
centos 7
docker安装:
|
1
|
[root@xiaoluo src]
# yum install docker-io -y
|
##docker三个基本概念我之见:
1、镜像:可以理解成一个简单的系统,在上面可以部署和运行东西,用镜像可以启动一个容器。
2、容器:一个容器代表一个独立的任务,各容器之前相互隔离运行。
3、厂库:存放镜像的地方。
查看镜像:
|
1
2
3
4
|
[root@xiaoluo src]
# docker images
REPOSITORY TAG IMAGE
ID
CREATED VIRTUAL SIZE
centos latest
60e65a8e4030
8
weeks ago
196.6
MB
ubuntu
14.04
d55e68e6cc9c
11
weeks ago
187.9
MB
|
*TAG:镜像的标识,当使用push不加别的版本,默认使用的是latest.
IMAGE ID:镜像的唯一标识
查看可以下载镜像:
|
1
|
[root@xiaoluo src]
# docker search centos
|
下载镜像可以docker pull xxx 从库里下载:
交互模式下启动docker:
|
1
2
|
[root@xiaoluo src]
# docker exec -it centos /bin/bash
[root@
73aaba6e0cd1
/
]
#
|
启动docker:
|
1
2
3
4
5
|
[root@localhost ~]
# docker run -d -p 2222:22 --name base csphere/centos:7.193e712c9d91467c0748961685e5453a7cd50898212191a762a36c6e933dbd539
*
-
d 后台启动
-
p 本机端口
2222
映射到docker内部的
22
口(当然前提镜像是提前构建好,后期会讲到)
-
-
name 给容器起一个别名 base
镜像名称csphere
/
centos:
7.1
|
查看正在启动的容器:
|
1
2
3
|
[root@localhost ~]
# docker ps
CONTAINER
ID
IMAGE COMMAND CREATED STATUS PORTS NAMES
93e712c9d914
csphere
/
centos:
7.1
"/usr/bin/supervisord"
About a minute ago Up About a minute
0.0
.
0.0
:
2222
-
>
22
/
tcp base
|
*查看所有的容器使用docker ps -a
删除容器:docker rm 93e712c9d914 (删除正在运行的容器docker rm f)
docker私有厂库:
当我们使用docker pull的时候默认是从官方的镜像去下载的,在我们环境中要是搭建一个本地的厂库存放我们的镜像就在合适不过了:
步骤:
1、下载一个registry容器,官方的images有时候被墙,我这里用的是灵雀云的镜像:
|
1
|
[root@localhost ~]
# docker pull index.alauda.cn/library/registry
|
2、重命名一个镜像:测试用
|
1
|
[root@localhost ~]
# docker tag 7e4f044162b7 192.168.63.198:5000/test
|
*把镜像ID为7e4f044162b7定义别名192.168.63.198:5000/test
|
1
2
3
4
5
6
7
8
|
[root@localhost native]
# docker images
REPOSITORY TAG IMAGE
ID
CREATED VIRTUAL SIZE
192.168
.
63.198
:
5000
/
test latest
7e4f044162b7
8
days ago
724.9
MB
csphere
/
mysql
5.5
7e4f044162b7
8
days ago
724.9
MB
csphere
/
php
-
fpm
5.4
f149fdc3bb11
8
days ago
684.8
MB
csphere
/
centos
7.1
e3570ed66dc9
8
days ago
591.3
MB
index.alauda.cn
/
library
/
registry latest
07d93e41c370
4
weeks ago
422.8
MB
docker.io
/
centos centos7.
1.1503
fab4b1df8eb1
4
months ago
212.1
MB
|
3、本地启动本地镜像厂库:
|
1
|
[root@localhost ~]
#docker run -d -p 5000:5000 -v /opt/data/registry/:/tmp/registry-dev 07d93e41c370
|
4、修改配置文件/etc/sysconf/docker:
|
1
2
|
打开
/
etc
/
sysconfig
/
docker,找到OPTIONS这一行,取消注释并修改如下:
OPTIONS
=
'--selinux-enabled --insecure-registry=yourip:5000'
|
**不然会报如下类似错:
|
1
2
3
4
|
unable to ping registry endpoint
https:
/
/
yourip:
5000
/
v0
/
v2 ping attempt failed with error: Get https:
/
/
yourip:
5000
/
v2
/
:EOF
v1 ping attempt failed with error: Get https:
/
/
yourop:
5000
/
v1
/
_ping:EOF
|
5、提交镜像到本地库:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
[root@localhost native]
# docker push 192.168.63.198:5000/test
The push refers to a repository [
192.168
.
63.198
:
5000
/
test] (
len
:
1
)
Sending image
list
Pushing repository
192.168
.
63.198
:
5000
/
test (
1
tags)
f1b10cd84249: Image successfully pushed
172633e38420
: Image successfully pushed
fab4b1df8eb1: Image successfully pushed
7911a8421c83
: Image successfully pushed
af42609f6313: Image successfully pushed
fa48118fc839: Image successfully pushed
b7ca1c16fd68: Image successfully pushed
fca316033a3c: Image successfully pushed
09f10030ab42
: Image successfully pushed
dc888ecebd54: Image successfully pushed
519dde82a4cc
: Image successfully pushed
832a31216b14
: Image successfully pushed
e3570ed66dc9: Image successfully pushed
e65974137a30: Image successfully pushed
2752603711a9
: Image successfully pushed
f027aaa7d0db: Image successfully pushed
6b59cfa21ac8
: Image successfully pushed
94d6cbee9151
: Image successfully pushed
5caacec189e1
: Image successfully pushed
255629e3621b
: Image successfully pushed
3ba1834f6adf
: Image successfully pushed
7e4f044162b7
: Image successfully pushed
Pushing tag
for
rev [
7e4f044162b7
] on {
http:
/
/
192.168
.
63.198
:
5000
/
v1
/
repositories
/
test
/
tags
/
latest}
|
6、上传成功检查:
|
1
2
|
[root@localhost registry]
# curl -X GET http://192.168.63.198:5000/v1/search
{
"num_results"
:
1
,
"query"
: "
", "
results
": [{"
description
": "
", "
name
": "
library
/
test"}]}
|
到此本地厂库创建完成。