一、安装配置
1、安装
针对ubuntu15.04 vivid
1、手动下载docker.io deb包(安装包:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/universe/d/docker.io/)
目前可用最新1.6 (docker.io_1.6.2~dfsg1-1ubuntu4~14.04.1_amd64.deb)
2、手动安装
sudo dpkg –i *.deb
3、sudo ln -sf/usr/bin/docker.io /usr/local/bin/docker
4、检查
dokcer –v
========================================================
卸载旧版本
sudo apt-get remove docker docker-engine docker.io
ubuntu其他版本
安装
方式一:
$ sudo apt-get update
$ sudo apt-get installlinux-image-extra-$(uname -r) linux-image-extra-virtual
$ sudo apt-get update
$ sudo apt-get install apt-transport-httpsca-certificates curl software-properties-common
$ curl -fsSLhttps://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository "deb[arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs)stable"
安装最新版
$ sudo apt-get update
$ sudo apt-get install docker-ce
安装指定版本(可指定稳定版)
$ apt-cache madison docker-ce
$ sudo apt-get installdocker-ce=
方式二:
1、添加docker源
cat>/etc/apt/sources.list.d/docker-main.list<
deb[arch=amd64] http://mirrors.aliyun.com/docker-engine/apt/repo ubuntu-xenialmain
EOF
2、Add Docker’sofficial GPG key:
curl -fsSLhttps://apt.dockerproject.org/gpg | sudo apt-key add -
3、更新源和升级系统
apt-get update
4、卸载旧版本docker
apt-get purge lxc-docker*
5、列出docker版本
apt-cache policy docker-engine
6、安装指定版本
apt-get install -y docker-engine=xxxxx
2、配置
/etc/init/docker.conf
/etc/init.d/docker
/etc/default/docker
配置DOCKER_OPTS='-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock'
/lib/system/system/docker.service配置
EnvironmentFile=-/etc/default/docker
然后,修改: ExecStart=/usr/bin/dockerd -d -H fd:// ,改成: ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS
或ExecStart=/usr/bin/dockerd -d -H fd:// -H tcp://0.0.0.0:2376 -Hunix:///var/run/docker.sock
PS:对于 1.12 以前的版本,/usr/bin/dockerd换成/usr/bin/docker
注:真正起作用的配置是/etc/init/docker.conf和/etc/default/docker
其中/etc/init.d/docker.config部分的exec"$DOCKERD" $DOCKER_OPTS --raw-log启动docker
/etc/default/docker中的配置生效
重新加载配置并且重新启动
sudo systemctl daemon-reload
sudo systemctl restart docker
或
sudo service docker restart
3、获取镜像
sudo docker pull ubuntu
docker run -i -t ubuntu /bin/bash:运行ubuntu镜像
运行hello world
sudo docker run ubuntu /bin/echo hello world
4、增加docker组
确保已经安装docker,且当前用户可以不加sudo来使用docker。
sudo groupadd docker
sudo gpasswd -a ${USER} docker
newgrp docker
sudo service docker restart
或
sudo systemctl restart docker
二、dokcer容器基础环境
docker run –v /local_dir:/tmp -it ubuntu:yourimage/bin/bash
进入容器
不需要拷贝文件,docker run –it ubuntu:yourimage /bin/bash
apt-get update
apt install net-tools # ifconfig
apt install iputils-ping # ping
apt-get install vim
apt-get install openssh-server
vim /etc/ssh/sshd_config,修改下面两个配置
PermitRootLogin yes
UsePAM no
service ssh start
安装jdk(Remote Filing System Root下放上jdk目录,版本至少高于1.6),jenkins连接需要用到
apt-get install git
Crtl+d 或者exit 退出容器
dokcer ps –a 查看容器id
docker commit contained ubuntu:tag 提交修改,保存Image
三、docker容器编译环境
1、准备环境
新建用户
adduser hongyang
输入密码
apt-get update
apt-get install sudo
vi /etc/sudoers
增加一行
# Allow members of group sudo to executeany command
%sudo ALL=(ALL:ALL) ALL
hongyang ALL=(ALL:ALL) ALL
切换用户
su hongyang
cd /home/hongyang/
建立工作目录
mkdir jenkins_workspace
mkdir workspace
git config --global user.name "yourname"
git config --global user.email "youremail"
ssh-keygen –t rsa
如果需要git clone代码,配置id_rsa.pub与git服务器
2、编译环境
确保已安装python
如果python已安装,python提示command not found
执行sudo ln –s /usr/bin/python2.7 /usr/bin/python
sudo apt-get update
sudo apt-get install python-pip
sudo pip install pexpect,oss2,paramiko,python-mysqldb
安装jdk(可安装在/usr/lib/jvm/jdk1.6.0_45),Yx编译需要1.6(android编译要求jdk6)
gcc
vi /etc/profile
export JAVA_HOME=/home/hongyang/software/jdk1.6.0_45
exportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export PATH=/home/hongyang/software/gcc-arm-none-eabi-4_9-2015q1/bin:$PATH
source /etc/profile
Jenkins Global ToolConfiguration中设置jdk路径
Job中选择所设置jdk
--
确保已有repo
repo clone代码
sudo apt-get installgit-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-devlib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils
安装busybox
sudo apt-get install busybox
apt-get update遇到Could notexecute 'apt-key' to verify signature (is gnupg installed?)
chown root:root /tmp
chmod 1777 /tmp
编译内核出现mkimage找不到
"mkimage" command not found -U-Boot images will not be built
make[1]: *** [arch/arm/boot/uImage] Error 1
make: *** [uImage] Error 2
解决方法是将uboot中tools文件夹下的mkimage文件复制到/usr/bin文件夹下即可。
Android编译只能在make versions3.81 and 3.82
解决步骤:
1、下载3.81或3.82版本的make压缩包
地址:ftp://ftp.gnu.org/gnu/make/
2、将make压缩包放到Ubuntu任意目录下解压
tar -xjvf make-3.81.tar.bz2
3、进入make-3.81目录
./configure
make
sudo make install
注意:中间一般不会出现错误,第三个命令必须加sudo给一个root权限,否则低版本的make安装不了。
4、查看make的版本
make –v
提示:每次进入docker镜像执行一次source /etc/profile
Shell脚本文件中提示source :command notfound,需要执行sudo dpkg-reconfigure dash,选择no
四、搭建本地docker镜像仓库
1、下载registry镜像
$ docker pull registry
2、接着我们运行registry镜像运行一个registry容器:
sudo docker run -d -p 5000:5000 registry 选择-d选项是为了让这个容器在后台运行。
默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,我将/opt/data/registry目录挂载到/tmp/registry目录下,如果你本地没有这个目录需要新创建,同时需要给/opt/data/registry目录扩大权限
chmod +777 /opt/data/registry
此处有坑:默认情况下是在容器内的/tmp/registry目录下,但是我的容器镜像是存放在容器中的/var/lib/registry 这个位置。
我是搭建完毕之后,上传一个镜像之后然后使用 find / -name ***查到的位置
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
3、本地镜像的push
建立镜像库首先我们应当将镜像push到本地镜像仓库中,我们以image id 504332db8051 为例:
sudo docker tag 504332db8051127.0.0.1:5000/tomcat
sudo docker push 127.0.0.1:5000/tomcat
这样我们就将镜像传到本地镜像库了。再通过 sudo docker images查看就能看到以127.0.0.1:5000/tomcat的镜像。
4、本地服务器pull镜像
本地服务器首先需要安装好docker,然后根据IP地址来pull镜像,举例来说我刚才建立镜像的主机IP是192.168.163.133,我们在局域网其他主机上执行以下指令:
sudo docker pull192.168.163.133:5000/tomcat
需要去修改我们镜像下载服务器的docker配置文件在/etc/default/docker添加一行:
DOCKER_OPTS="--insecure-registry192.168.163.133:5000"这样就能顺利的从本地镜像库中下载镜像了。
或者是在/etc/sysconfig/docker文件中添加
OPTIONS='--selinux-enabled--insecure-registry 192.168.163.133:5000'
搭建registry UI
1、创建工作目录
$ mkdir -p hyper-docker-registry-web-config/frontend hyper-docker-registry-web-config/registry
$ cd hyper-docker-registry-web-config
2、建一个用于 registry 的配置文件
$ vim registry/config.yml
version: 0.1
log:
level: info
formatter: text
fields:
service: registry-srv
environment: production
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete:
#要在 ui 上能够删除镜像,enable 的值必须是 true
enabled: true
http:
addr: :5000
debug:
addr: :5001
3、新建一个用于 ui 的配置文件
$ vim frontend/config.yml
registry:
#Docker registry url
url: http://registry-srv:5000/v2
#Docker registry fqdn
name: localhost:10050
#To allow image delete, should be false
readonly: false
auth:
#Disable authentication
enabled: false
4、新建一个启动脚本
$ vim startup.sh
#! /bin/bash
#registry 监听主机的 10050 端口,并将镜像文件存储在主机的 /var/lib/registry/storage 中。
docker run -d -p 10050:5000--restart=always --name registry-srv -v $(pwd)/registry/:/etc/docker/registry:ro-v /var/lib/registry/storage:/var/lib/registry registry:2
#ui 监听主机的 10080 端口
docker run -d -p 10080:8080 --name registry-web --link registry-srv:srv-v $(pwd)/frontend/:/conf/:ro hyper/docker-registry-web
5、启动
$ chmod +x startup.sh
$ ./startup.sh
等启动完成,就可以通过 http://localhost:10080 访问 ui,且可以在 ui 上浏览/删除镜像了。
上传镜像
sudo docker tag 504332db8051 127.0.0.1:10050/ubuntu:base
sudo docker push 127.0.0.1:10050/ubuntu:base
下拉镜像
需要
DOCKER_OPTS="--insecure-registry192.168.163.133:10050"
然后sudo docker pull 192.168.163.133:10050/ubuntu:base
五、Jenkins配置
1、安装Docker插件
2、在jenkins的系统管理----系统设置:
i.添加云---Docker
192.168.20.72为docker所在宿主机ip,宿主机dokcer设置中配置了
DOCKER_OPTS='-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock'
ii.添加dockerimages 模板
这里要注意:Hostname是slave容器所在宿主主机名,即ip
Port bindings 设置IP后生成的slave容器是32783:22,不然连不上
其中SSH方式要求镜像中安装了sshd
默认不启动sshd,需要在进入容器后启动sshd,可以在Docker Command中执行/bin/bash,然后启动脚本文件,文件中启动sshd
例如:/bin/bash /root/start_ssh.sh
#!/bin/bash
service ssh start
source /etc/profile
top
top命令是为了让docker容器一直启动,不然命令执行完容器就退出,完成继续后面的操作。
3、job设置