1.CentOS7安装Docker
使用yum安装
卸载老版本的Docker:
sudo yum remove docker docker-common docker-selinux docker-engine
安装仓库
1.安装所需的包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.安装stable仓库。必须安装stable仓库,即使你安装edge或test仓库中Docker构建版本
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、(可选)启用edge及test仓库。默认是禁用的
sudo yum-config-manager --enable docker-ce-edge
sudo yum-config-manager --enable docker-ce-test
再次禁用:
sudo yum-config-manager --disable docker-ce-edge
安装Docker CE
1.更新yum的包索引
sudo yum makecache fast
2.安装最新版本的Docker CE
sudo yum install docker-ce
3.列出当前可用的Docker版本
yum list docker-ce.x86_64 --showduplicates|sort -r
可以选择想安装的docker CE版本
sudo yum install docker-ce-<VERSION>
4.启动Docker
sudo systemctl start docker
5.验证安装是否正确
sudo docker run hello-world
卸载
1.删除Docker软件包
sudo yum remove docker-ce
2.删除Docker存储的文件
sudo rm -rf /var/lib/docker
设置开机启动docker
systemctl enable docker
二、docker常用命令
1.docker镜像常用命令
1.搜索镜像
docker search [OPTIONS] TERM
展示列表:
NAME:镜像仓库名称
DESCRIPTION:镜像仓库描述
STARS:镜像仓库收藏数
OFFICIAL:表示是否为官方仓库
AUTOMATED:表示是否是自动构建的镜像仓库
2.下载镜像
docker pull [OPTIONS] NAME[:TAG][@DIGEST]
示例:
docker pull reg.itmuch.com/java:7
3.列出镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
示例:
docker images java
展示列表:
REPOSITORY:镜像所属仓库名称
TAG:镜像标签,默认是latest
IMAGE ID:镜像ID,表示镜像唯一标识
CREATED:镜像创建时间
SIZE:镜像大小
4.删除本地镜像
docker rmi [OPTIONS] IMAGE[IMAGE ...]
示例:删除所有镜像
docker rmi -f $(docker images)
5.保存镜像
docker save [OPTIONS] IMAGE [IMAGE...]
示例:
#将busybox保存为busybox.tar
docker save busybox > busybox.tar
docker save --output busybox.tar busybox
6.加载镜像
docker load [OPTIONs]
示例:
#从busybox.tar文件中加载镜像
docker load < busybox.tar
docker load --input busybox.tar
7.构建镜像
docker build [OPTIONS] PATH | URL|-
示例:
docker build -t itmuch/some-repo:some-tag
2.docker容器常用命令
1.新建并启动容器
docker run
2.列出容器
docker ps [OPTIONS]
展示列表:
CONTAINER_ID:表示容器ID
IMAGE:表示镜像名称
COMMAND:表示启动容器时运行的命令
CREATED:表示容器的创建时间
STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止
PORTS:表示容器对外的端口号
NAMES:表示容器名称
3.停止容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
4.强制停止容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
5.启动已停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
6.重启容器
docker restart [OPTIONS] CONTAINER[CONTAINER...]
7.进入容器
##所有窗口会同步显示
docker attach CONTAINER
##使用nsenter进入容器
docker inspect --format "{{State.Pid}}" $CONTAINDER_ID
nsenter --target "$PID" --mount --uts --ipc --net --pid
#使用docker exec进入
docker exec -it 容器id /bin/bash
8.删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER..]
示例:
docker rm -f $(docker ps -a -q)
9.导出容器
docker export [OPTIONS] CONTAINER
示例:
#将red_panda容器导出成latest.tar文件
docker export red_panda > latest.tar
docker export --output="latest.tar" red_panda
10.导入容器
docker import [OPTIONS] file|URL|-[REPOSITORY[:TAG]]
#从nginx2.tar文件导入,并创建nginx镜像
docker import nginx2.tar nginx
三、docker安装jenkins
1、使用docker命令下载Jenkins 获取镜像
sudo docker pull jenkins
2、创建用于存放jenkins的文件夹
mkdir /home/var/jenkins
3、cd进入/home/var/目录,设置jenkins文件夹的归属用户UID为1000
sudo chown -R 1000:1000 jenkins/
4、启动Jenkins
sudo docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/var/jenkins:/var jenkins
(Jenkins重启命令)
docker restart jenkins
出现问题
1.错误:
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
问题:在从 https://c.163.com/hub#/m/repository/?repoId=3093 下载镜像 docker pull hub.c.163.com/library/jenkins:latest后,启动容器时,报错:
[admin@3-29 ~]$ sudo docker run --name myjenkins-slave1 -p 8080:8080 -v /var/lib/jenkins:/var/jenkins_home hub.c.163.com/library/jenkinstouch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission deniedCan not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
解决办法:修改路径
[admin@3-29 ~]$ sudo docker run --name myjenkins-slave1 -p 8080:8080 -v /var/lib/jenkins:/var 4bb0a1bd398dRunning from: /usr/share/jenkins/jenkins.warwebroot: EnvVars.masterEnvVars.get("JENKINS_HOME")Jul 14, 2017 9:24:49 AM Main deleteWinstoneTempContentsWARNING: Failed to delete the temporary Winstone file /tmp/winstone/jenkins.warJul 14, 2017 9:24:49 AM org.eclipse.jetty.util.log.JavaUtilLog infoINFO: Logging initialized @382ms