yum install -y docker
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
- 登录阿里云账号,https://cr.console.aliyun.com/#/accelerator
- 用加速器地址替换以下命令中的:<your accelerate address>
- 修改<ip>和<port>为私服地址
sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=<your accelerate address> --insecure-registry=<ip>:<port>|g" /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo systemctl start docker
# 基于哪个镜像
FROM java:8
# 将本地文件夹挂载到当前容器
VOLUME /tmp
# 复制文件到容器
ADD docker-demo-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
# 声明需要暴露的端口
EXPOSE 8888
# 配置容器启动后的命令
ENTRYPOINT ["java","-jar","/app.jar"]
docker build -t bigbaldy/docker-demo .
docker run -d -p 8888:8888 bigbaldy/docker-demo
访问http://127.0.0.1:8888/hello 返回hello kubernetes
docker push bigbaldy/docker-demo //需要输入你在DockerHub上注册的用户密码
- docker run -d -p 5000:5000 registry:2 //使用docker registry2.0搭建私有仓库
- docker tag bigbaldy/docker-demo 127.0.0.1:5000/docker-demo //修改镜像标签,否则会提示找不到镜像的
- docker push 127.0.0.1:5000/docker-demo
- 生成证书
mkdir -p ~/certs
cd ~/certs
openssl genrsa -out reg.codesafe.com.key 2048
- 生成密钥文件,会有一些信息需要填写,注意“Common Name”要填写“reg.codesafe.com”
openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.codesafe.com.key -x509 -days 365 -out reg.codesafe.com.crt
- 将生成的证书拷贝到根证书路径
mkdir -p /etc/docker/certs.d/reg.codesafe.com
cp ~/certs/reg.itmuch.com.crt /etc/docker/certs.d/reg.codesafe.com
- 重启docker
systemctl restart docker
- 启动私有库,注意要在~目录下执行
docker run -d -p 443:5000 \
--restart=always \
--name registry \
-v `pwd`/certs:/certs \
-v /opt/docker-image:/opt/docker-image \
-e STORAGE_PATH=/opt/docker-image \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/reg.codesafe.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/reg.codesafe.com.key \
registry:2
- 修改镜像标签,否则会提示找不到镜像的
docker tag bigbaldy/docker-demo reg.codesafe.com/bigbaldy/docker-demo
- push镜像到私有库
docker push reg.codesafe.com/bigbaldy/docker-demo
import requests
import json
import traceback
repo_ip = '127.0.0.1'
repo_port = 5000
def getImagesNames(repo_ip,repo_port):
docker_images = []
try:
url = "http://" + repo_ip + ":" +str(repo_port) + "/v2/_catalog"
res =requests.get(url).content.strip()
res_dic = json.loads(res)
images_type = res_dic['repositories']
for i in images_type:
url2 = "http://" + repo_ip + ":" +str(repo_port) +"/v2/" + str(i) + "/tags/list"
res2 =requests.get(url2).content.strip()
res_dic2 = json.loads(res2)
name = res_dic2['name']
tags = res_dic2['tags']
for tag in tags:
docker_name = str(repo_ip) + ":" + str(repo_port) + "/" + name + ":" + tag
docker_images.append(docker_name)
print docker_name
except:
traceback.print_exc()
return docker_images
print getImagesNames(repo_ip, repo_port)
执行就可以看到[u'127.0.0.1:5000/bigbaldy/docker-demo:latest']
- curl --cacert ../certs/reg.codesafe.com.crt https://reg.codesafe.com/v2/_catalog
- Docker Registry HTTP API V2
- 下载
wget https://github.com/vmware/harbor/archive/master.zip
- 解压
unzip master.zip
cd /harbor-master/make
- 修改配置文件
vim harbor.cfg
./prepare
- 更新docker-compose.yml
cp docker-compose.tpl docker-compose.yml
#在docker hub查找docker-compose.yml配置文件中所有镜像的官方最新版本号,将__version__替换掉
- 运行
docker-compose up -d
- 上传镜像到harbor
docker login 172.24.62.181 #根据提示输入用户名密码
docker push 172.24.62.181/bigbaldy/docker-demo
http://blog.csdn.net/luckytanggu/article/details/70285837
- 安装docker-compose(https://github.com/docker/compose/releases)
- 配置启动文件,例如docker-compose.yml
version: '3' #文件版本
services:
eureka:
build: eureka #docker文件位置
restart: always #启动失败是否重启
volumes:
- /data/demo/:/usr/local/codesafe/:z #将容器目录映射到物理机
ports:
- 1001:1001
network_mode: "host" #与真实机使用相同的网络环境
server1:
build: server1
ports:
- 2001:2001
network_mode: "host"
server2:
build: server2
ports:
- 2002:2002
network_mode: "host"
- 使用docker-compose启动镜像
docker-compose -f docker-demo.yml up -d #-f docker-demo.yml可以省略
容器与容器之间网络是隔离的,所以服务内部不能用IP,要写网络名(docker-demo)
http://blog.csdn.net/qq_22841811/article/details/67369530 //运行会报各种错误!!文章后面有各种解决方式,可以尝试,个人倾向于手动写Dockerfile,然后通过jenkins调用docker命令进行镜像push
docker pull centos #拉取centos
docker run -it [image_name] sh #运行并进入容器,如果容器一启动就报错退出可以尝试用这条指令进入
docker exec -it centos /bin/bash #进入容器
#在容器内进行相关安装
docker commit --change='ENTRYPOINT XXXX' -c "EXPOSE XXXX" NAMES REPOSITORY #更改启动命令并新建快照
#!/bin/bash
docker-compose up --build -d
docker rmi `docker images|grep '<none>'|awk '{print $3}'`
docker network create -d overlay springcloud-overlay # 创建overlay网络
docker stack deploy -c docker-compose.yml demo #启动命令
docker-compose.yml内容
version: '3'
services:
eureka:
image: 172.24.62.181/bigbaldy/eureka
ports:
- "1001:1001"
networks:
- springcloud-overlay
server1:
image: 172.24.62.181/bigbaldy/server1
environment:
- EUREKA_SERVER_ADDRESS=eureka
ports:
- "2001:2001"
networks:
- springcloud-overlay
server2:
image: 172.24.62.181/bigbaldy/server2
deploy:
replicas: 2
environment:
- EUREKA_SERVER_ADDRESS=eureka
networks:
- springcloud-overlay
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8089:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- springcloud-overlay
networks:
springcloud-overlay:
external:
name: springcloud-overlay
docker images #查看镜像列表
docker ps -a #查看容器列表
docker run -d -p 8888:8888 reg.codesafe.com/bigbaldy/docker-demo #启动镜像
docker start CONTAINER_ID #启动容器
docker stop CONTAINER_ID #停止正在运行的容器
docker rm CONTAINER_ID #删除容器,注意必须停止才能删除
docker rmi IMAGE_ID #删除镜像
docker pull reg.codesafe.com/bigbaldy/docker-demo #拉取镜像
docker rmi `docker images|grep '<none>'|awk '{print $3}'` #清除<none>镜像
docker-compose rm #使用docker-compose.yml清除容器
docker-compose up --build -d #更新并启动容器
docker save REPOSITORY > FILENAME #保存镜像到文件
docker load < FILENAME #导入文件到镜像
docker cp FILENAME CONTAINER_ID:FILENAME #拷贝文件到容器
docker cp CONTAINER_ID:FILENAME FILENAME #拷贝容器内文件到物理机
docker exec -it CONTAINER_ID /bin/bash #进入容器
docker commit -p CONTAINER_ID CONTAINER_BAK_NAME #新建容器快照
docker rm `docker ps -a -q` #删除所有容器
- yum install SDL
- yum install kernel-devel //注意版本要与系统内核版本一致,若不一致请下载相应的kernel-devel安装包或者升级系统内核(http://blog.csdn.net/u010250863/article/details/70169985)
- 如果安装过KVM,请停止服务
- systemctl stop libvirtd
- ps -ef|grep kvm|grep -v grep|cut -c 9-15|xargs kill -9
- modprobe -r kvm_intel
- modprobe -r kvm
- yum install gcc
- 下载virtualbox
- 查看最新稳定版:https://storage.googleapis.com/kubernetes-release/release/stable.txt
- 下载,修改版本号即可下载相应版本,例如:https://storage.googleapis.com/kubernetes-release/release/v1.8.3/bin/linux/amd64/kubectl
- chmod +x ./kubectl
- mv ./kubectl /usr/local/bin/kubectl
- 官网
- minikube start //注意启动过程中会下载localkube,需要翻墙(export http_proxy=http://10.16.13.18:8080)
- minikube ssh
- sudo vim /etc/hosts 添加172.24.62.181 reg.codesafe.com
- scp root@172.24.62.181:/etc/docker/certs.d/reg.codesafe.com/reg.codesafe.com.crt /etc/docker/certs.d/reg.codesafe.com/
- 防止从google拉取镜像
- docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
- docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0
kubectl run docker-demo --image=reg.codesafe.com/bigbaldy/docker-demo --port=8888
kubectl expose deployment docker-demo --type=LoadBalancer
minikube service docker-demo
- 官网
- 部署Dashboard UI
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
- 访问Dashboard UI (未实现,远程机器权限问题还在研究)
- kubectl get pods - 查看pod
- kubectl describe pod [PodName] - 查看出错原因
- kubectl delete service docker-demo - 删除服务
- kubectl delete deployment docker-demo - 删除部署
- kubectl get services - 查看服务
- kubectl get doployments - 查看部署