https://www.docker.com #官网地址
https://hub.docker.com #docker hub地址,很多镜像都在里面
rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm #安装epel源
https://opsx.alibaba.com/mirror #docker阿里镜像
cd /etc/yum.repos.d
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ##下载docker yum文件
安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum -y install docker-ce #安装docker
启动docker
systemctl start docker
systemctl enable docker 开机自启动
查看docker版本和信息
docker --version
docker info
获取镜像和查看 导出 导入 删除镜像
docker search centos ##搜索镜像
docker pull centos ##下载镜像
docker images #查看本地镜像
docker save -o centos.tar centos;lastest ##导出镜像
docker load --input centos.tar ##导入镜像
docker rmi ID ###删除镜像
docker rmi -f 镜像名称 ##强制删除镜像
启动容器 停止 查看 进入 删除
docker run --name -h hostname
docker run --name mydocker -it nginx /bin/bash #启动并进入容器
docker start coentos 启动容器
docker stop CONTANINER ID ##停止容器
docker ps -a -l
docker ps -a -q #显示所有容器ID
docker exec |nsenter
docker rm -f 容器ID #删除容器
docker attach mydocker 进入docker容器
yum -y install util-linux #安装nsenter
docker inspect mydocker #获取docker容器详情
docker inspect --format "{
{ .State.Pid }}" mydocker 获取容器第一个进程的PIDnsenter --target 3767 --mount -uts --ipc --net --pid #进入容器
docker exec mydocker whoami ##在一个正在执行的容器里直接执行命令
docker exec -it CONTAINER ID /bin/bash #进入docker容器
docker run --rm centos /bin/echo "hehe" #容器执行完毕自动退出并删除
docker run -d -p 3333:80 --name nginx-demo nginx #后台启动容器 指定端口
docker run -d --rm --name nginx-test1 -v /data nginx #容器退出自动删除
docker run -d --name volume-demo -v /data:/data nginx ##宿主机的data目录挂载到容器的/data目录
docker run -d --name nginx-volume-demo --volumes-from volume-demo nginx ##使用volume-demo的存储
构建镜像
手动
docker run --name mynginx -it centos /bin/bash #进入mynginx容器
yum -y install nginx
docker commit -m "My ningx" 9b78cd5667cb mynginx:v1 ##提交
docker run -d -p 91:80 mynginx:v1 nginx ##启动镜像
通过dockerfile自动构建
mkdir -p /opt/dockerfile/mynginx
#cat Dockerfile
#Base Image
FROM centos#Maintainer
MAINTAINER LIU xxxxxx@abc.com#RUN
RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpmRUN yum -y install nginx --enablerepo=epelRUN echo "daemon off;" >>/etc/nginx/nginx.confADD index.html /usr/share/nginx/html/index.htmlEXPOSE 90CMD ["nginx"]FROM:每个dockerfile的第一条指令都是FROM。指定一个已经存在的镜像作为基础镜像
MAINTAINER:指定作者及联系地址
RUN:当前镜像中运行的指令
EXPOSE:告诉docker该容器内的应用程序会使用指定端口
-------------------
docker build -t mynginx:v2 .
通过supervisor管理容器多进程
yum -y install supervisor
ls -l /etc/supervisord.*
以构建centos镜像+ssh为例
1 #Base Image 2 FROM centos 3 4 #Maintainer 5 MAINTAINER liumengjie@koolearn.com 6 7 #RUN 8 RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm 9 RUN yum install -y wget sudo git tree net-tools supervisor openssh-clients openssh-server openssl-devel&& yum clean all10 RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key11 RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key12 RUN ssh-keygen -A -t dsa -f /etc/ssh/ssh_host_dsa_key13 14 #set root pwd15 16 RUN echo "root:123.com"| chpasswd17 18 #For Supervisor19 ADD supervisord.conf /etc/supervisord.conf20 ADD sshd.ini /etc/supervisord.d/sshd.ini21 22 #Outside port23 EXPOSE 2224 25 CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]
cat sshd.ini[program:sshd]command=/usr/sbin/sshd -D process_name=%(program_name)s autorestart=true
修改 nodaemon=true
docker build -t system/centos . ##构建镜像
docker run -d --name centos-ssh-supervisor -p 2222:22 system/centos ##启动镜像
ps -aux #查看进程
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.8 0.1 115572 14692 ? Ss 13:39 0:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.confroot 10 0.0 0.0 112724 4216 ? S 13:39 0:00 /usr/sbin/sshd -Droot 11 1.1 0.0 155144 5968 ? Ss 13:40 0:00 sshd: root@pts/0root 13 0.2 0.0 15252 1916 pts/0 Ss 13:40 0:00 -bashroot 26 0.0 0.0 55140 1796 pts/0 R+ 13:40 0:00 ps aux
supervisorctl status ##查看supervisor管理的进程
构建JDK+TOMCAT运行环境
mkdir -p /opt/dockerfile/runtime/tomcat #新建目录
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz #下载tomcat
cat DOckerfile#Base ImageFROM system/centos#MaintainerMAINTAINER liumengjie@koolearn.com#RUNRUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel && yum clean allENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk#TomcatADD apache-tomcat-8.5.35.tar.gz /usr/localRUN ln -s /usr/local/apache-tomcat-8.5.35 /usr/local/tomcat#For SupervisorADD tomcat.ini /etc/supervisord.d/tomcat.iniENV TOMCAT_HOME /usr/local/tomcat#Outside portEXPOSE 22 8080CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]
cat tomcat.ini[program:tomcat]command=/usr/local/tomcat/bin/catalina.sh runprocess_name=%(program_name)s autorestart=true
docker build -t runtime/tomcat . #构建
docker run -d --name tomcat-demo -p 8080:8080 -p 8888:22 runtime/tomcat ##启动
http://10.1.1.1:8080/ 访问测试
使用harbor构建私有仓库
# wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.0-rc1.tgz ###下载
tar zxvf harbor-offline-installer-v1.7.0-rc1.tgz #解压
cd harbor/
yum -y install python-pip
pip install docker-compose #安装依赖
cat /etc/docker/daemon.json #添加信任
{
"registry-mirrors": ["https://tdimi5q1.mirror.aliyuncs.com"], "insecure-registries": ["http://10.155.20.195"]}systemctl restart docker #重启docker
修改 harbor.cfg
hostname = 10.155.20.195
./install.sh #启动
浏览器访问 http://10.10.20.10/harbor
docker tag app/jenkins 1010.20.10/app/jenkins:v1 #给镜像打标签
docker push 1010.20.10/app/jenkins #推送到harbor