docker 实践杂记

阅读8664评论73

一, 私有docker镜像仓库的搭建

registry 增加认证机制

mkdir /opt/registry/auth
docker run --entrypoint htpasswd registry:2 -Bbn username password > /opt/registry/auth/htpasswd
docker run -d -p 5000:5000 --restart=always --name registry \
  -v /opt/registry/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  registry:2
docker login localhost:5000

使用https传输

docker run -d -p 5000:5000 --restart=always --name registry \
  -v /opt/registry/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -v /opt/registry/certs:/certs \
  -v /opt/registry/data:/var/lib/registry
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2
docker login myregistrydomain.com:5000

二, github添加钩子的两种方法

1, 是在jenkins任务中勾选 触发远程构建 (例如,使用脚本) 添加token, 组成url, 到github中添加webhook url, 用户名和密码为jenkins的用户, 在用户设置里可获取.url格式如下:

https://jenkins_username:token@jenkins_domain/job/jenkins_job_name/build?token=jenkins_job_token

2, 第二种是在github中添加jenkins service, 得到url , 会自动添加到webhooks, 而在jenkins任务中由于添加了github plugin, 只需要勾选 Build when a change is pushed to GitHub即可

另外需要在全局中添认证github, 此处可以借助github设置的token, 并有repo相关的权限, 将这个token添加到jenkins 认证里以secret text的形式.

三, 科学上网shadowsocks docker中运行.

docker run -d -p 2016:2016 --restart=always oddrationale/docker-shadowsocks -s 0.0.0.0 -p 2016 -k 密码 -m aes-256-cfb

四, docker-compose安装

apt-get install python-pip python-dev
pip install -U docker-compose
chmod +x /usr/local/bin/docker-compose

五, 获取docker 容器IP

docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID

六, 在Jenkins容器内运行了Docker命令方法:

  • DooD(Docker-outside-of-Docker)特权模式 这里存在一个重大的安全问题:Jenkins用户对宿主具有root权限,比如Jenkins可以创建装载宿主任意目录的容器。因此,务必确保这个容器只对受信用户访问,并考虑使用VM来将Jekins与宿主其他部分隔离开。
  • Docker in Docker(DinD)DinD并不比使用特权模式的容器安全性高,不过确实能避免使用sudo。DinD最主要的劣势是你无法重用宿主缓存的镜像(不过如果需要为测试容器提供一个与宿主隔离的干净环境,这将很有用)。
  • 使用HTTPS与Docker后台程序通讯 通过HTTPS暴露socket不需要sudo并且可以使用宿主的镜像,但因为打开了端口增加了攻击面,可以说是最不安全的。

七, jenkins 相关插件简介

1, Docker build step plugin

对应配置面板: execute Docker commond 作用: 可以添加Docker命令到构建步骤中;

2, CloudBees Docker Build and Publish plugin

对应配置面板: Docker build and publish 作用: 提供通过Dockerfile构建工程的能力并将制作好的镜像发布到Docker仓库中;

3, Docker Plugin

作用: 可以使用Docker主机动态分配的容器作为Jenkins的从节点;

4, Kubernetes Plugin

作用:通过由Kubernetes管理的多个Docker主机系统来动态分配的容器作为Jenkins的从节点; Kubernetes Plugin依赖了Docker Plugin

5, Docker Commons Plugin

作用: 为其他与Docker相关的插件提供API; 其它docker插件依赖于它. CloudBees Docker Build and Publish plugin和Docker build step plugin都依赖了Docker commons Plugin

八, jenkins 在容器中运行, 挂载卷权限问题.

sudo chown -R 1000:1000 /var/run/docker.sock 
sudo chown -R 1000:1000 /var/jenkins_home

九, Docker数据卷的备份和还原 (利用数据卷容器来备份、恢复、迁移数据卷)

1, 数据备份

$ docker run --volumes-from [container name] -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar [container data volume]

上面的命令创建了一个容器,该容器同时挂载了两个数据卷,第一个数据卷是通过容器间接挂载的,第二个容器是通过-v选项指定的,容器启动后就可以直接访问这两个容器,这样就可以实现在该容器中将一个数据卷的数据拷贝到另一个数据卷中,从而实现备份的目的。

2, 数据还原 如果要恢复数据到一个容器,首先创建一个带有空数据卷的容器[container name]。

$ docker run -itd -v /dbdata --name [container name] ubuntu /bin/bash
$ docker run --volumes-from [container name] -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar

原理与数据备份一致,只需要将压缩命令换成解压缩命令即可:

73条评论添加新评论
MirrorWangMirrorWang2016.10.15 14:14

MirrorWang@MirrorWang 分割

chenyingqiao121@MirrorWang 啊是的发生的发

huangliangchina@MirrorWang sdfdsaf

NikolasNull@MirrorWang

NikolasNull@NikolasNull hjh

MirrorWangMirrorWang2016.10.16 16:14

qwfy5287qwfy52872016.10.18 12:17

不错

MillyMilly2016.10.27 3:6

23432432432

MillyMilly2016.10.27 3:6

23434234

LiuthxLiuthx2016.11.3 6:53

这些东西是你一个人写的吗?感觉已超神

Jack@Liuthx 谢谢夸奖, 这没什么啊, 雕虫小技, 不足挂齿.

zsh chou@Jack #test

zzcitzzcit2016.11.9 3:0

大神,你的ng2版里面,models 下的index.ts为什么写成下面这样。写错了,还是我理解错了。 export * from './auth.model' export * from './globalval.model' export * from './tag.model' export * from './article.model' export * from './comment.model'

Jack@zzcit 怎么了, 没毛病吧.

hapimanhapiman2016.11.30 15:42

djdj

QiLiangQiLiang2016.12.16 8:8

``` 加油 ```

CareyToboo123@QiLiang +1

SmokingIceSmokingIce2017.1.4 2:51

在手机上看不到评论

JackHu@SmokingIce 不会吧,我用手机回复的。

888@JackHu 3333333333

elva2596elva25962017.2.5 12:41

测试下

elva2596elva25962017.2.5 13:16

请问大神有vue2.0版本的么

JackHu@elva2596 vue2.0版早已写好了, 只是有几个地方用到了vue-strap, 等待vue-strap升级到2.0再更新.

8888882017.2.13 7:1

dddddddddddddd

lovewanerlovewaner2017.2.13 9:13

ddddddddddddddddddd

lovewaner@lovewaner 这个时间咋不是24小时制的啊

daifee@lovewaner 66

8888882017.2.16 0:58

88888

安安@888 试试😊

安安@安安 回复自己

安安@888 嘻嘻

8888882017.2.24 2:1

55

ahhblssahhblss2017.2.27 9:53

good

2342342017.3.7 13:0

博主要是能写一个系列教程就好了 源码有点看不太懂

zannet@bonzstars 333

daifeedaifee2017.3.21 4:5

666

tianzhihentianzhihen2017.3.21 13:2

666

zannetzannet2017.4.6 2:17

333

chenyingqiao121chenyingqiao1212017.4.15 13:22

速度发送对方

chenyingqiao121@chenyingqiao121 啊是的发生的

chenyingqiao121@chenyingqiao121 啊是的发生的发

chenyingqiao121chenyingqiao1212017.4.15 13:32

啊是的发生的

chenyingqiao121@chenyingqiao121 asdfasdfasdf

chenyingqiao121chenyingqiao1212017.4.17 14:56

asdfasdfasdf

yay2008yay20082017.6.10 9:16

再来膜拜下!!!

我一路向北我一路向北2017.8.8 3:46

we4w4243 2 3 23 232 3 23 23 232 32 3

我一路向北@我一路向北测试

HelloHello2017.8.20 14:55

你好世界人民

Hello@Hello 这是一个测试

zhanglei518zhanglei5182017.8.29 15:59

4253452345

starkwangstarkwang2017.9.2 2:44

1111111111

maoyuyangmaoyuyang2017.9.13 9:35

test

maoyuyangmaoyuyang2017.9.13 9:37

<script>alert(1)</script>

maoyuyang@maoyuyang sdasdqw

JoogerJooger2017.9.25 9:35

很好

sl1673495sl16734952017.10.5 13:3

很好

sl1673495sl16734952017.10.5 13:3

很好很好

sl1673495sl16734952017.10.5 13:3

很好很好

sl1673495sl16734952017.10.5 13:3

很好很好

sl1673495sl16734952017.10.5 13:3

很好很好

sl1673495sl16734952017.10.5 13:3

很好很好

sl1673495sl16734952017.10.5 13:3

很好很好

sl1673495sl16734952017.10.5 13:3

很好很好

sl1673495sl16734952017.10.5 13:3

很好很好

sl1673495sl16734952017.10.5 13:5

很好很好

sl1673495sl16734952017.10.5 13:5

很好很好

zhangchangzhaozhangchangzhao2017.11.2 7:24

学习了,留言。

安安安安2017.11.6 3:5

哇好棒!

我是金角大王我是金角大王2017.11.13 1:24

good

alsosweetalsosweet2017.11.14 16:0

<h1>很好啊</h1>

huanglianghuangliang2017.12.7 15:57

sdfasdfasdf

maruco2020maruco20202017.12.12 9:8

656+56+5+656+5

Bruce.LiuBruce.Liu2017.12.28 13:28

smallpath

Bruce.LiuBruce.Liu2017.12.28 13:29

#sfdas ## adsfasf #### 了的事发生

leosexleosex2018.1.9 9:47

不错

吕岗吕岗2018.1.31 9:55

8090

sixdresixdre2018.3.23 7:8

123

sixdre@sixdre 456

NikolasNull@sixdre 6767

hellohello2018.3.27 14:15

test

sossos2018.4.18 16:23

mark

gookinggooking2018.4.22 9:29

123

JazhJazh2018.4.25 6:37

zxc

sylarking1985sylarking19852018.5.15 4:43

124

NikolasNull@sylarking1985 5345435

2342342018.5.25 4:10

test

bonzstars test

bonzstars@bonzstars test

NikolasNullNikolasNull2018.6.2 3:6

tret

NikolasNull@NikolasNull 34234

NikolasNull@NikolasNull 543535

ChenYiJunChenYiJun2018.6.13 13:3

&lt;script&gt;alter('试试XSS能行不')&lt;/script&gt;

NikolasNull@ChenYiJun 42342

NikolasNull@NikolasNull 42424

NikolasNullNikolasNull2018.6.22 13:45

2434

NikolasNull@NikolasNull 3121

bwzhmmbwzhmm2018.6.25 8:32

411222222222222

bwzhmmbwzhmm2018.6.25 8:36

加上emoji表情就更完美了??

bwzhmmbwzhmm2018.6.25 8:38

😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊

FedaxFedax2018.7.11 17:54

时间的格式化有点问题。。

zsh chouzsh chou2018.7.16 8:13

#32 ## 32

zsh chouzsh chou2018.7.18 13:21

32432

zsh chouzsh chou2018.7.18 13:21

-33

paultyhpaultyh2018.7.20 1:56

+1

xinzhijiexinzhijie2018.8.4 16:46

xinzhijie@xinzhijie 牛1

xinzhijie@xinzhijie 2

xinzhijie44

Hatcat123@xinzhijie 电饭锅

欧阳铖欧阳铖2018.9.7 4:16

hello world