基本功能
镜像
下载镜像
docker search tutorial
docker pull learn/tutorial
查看本地镜像
docker images
安装与commit,每次commit变化images名。
docker run learn/tutorial apt-get install -y ping 保存改动,创建新容器 [root@s2_centos ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6c121f3cd912 learn/tutorial "apt-get install -..." 2 minutes ago Exited (0) 2 minutes ago pedantic_hodgkin [root@s2_centos ~]# [root@s2_centos ~]# docker commit 6c1 learn/ping sha256:e0b8cf4ba4cc9ddc3a20cffc93ff7df9e94cb4ae50d1ca4794e9bb1d6612dc9c
由此,生成了新的镜像 learn/ping 在本地仓库
container
查看
docker ps # 查看的是container 不加参数,列出运行的 -a 列出所有 -n 列出最近n个 -l 列出最近的 -q 静默模式
启停
docker start/stop names或者id
删除
docker rm 861cb16c86c1
仓库
公有仓库
docker pull a docker tag a b docker login docker push b
私有仓库
docker search registry
docker pull registry
启动仓库
docker run -d -p 5000:5000 --restart=always --name registry222 -v /data/dockerfile/:/var/lib/registry registry
通过修改tag名,(自动选择)上传到私有仓库
查看仓库本地/data/dockerfile目录
验证
删除docker rmi localhost:5000/learnping 重新获取docker pull localhost:5000/learnping
查看私有仓库镜像
curl -X GET http://127.0.0.1:5000/v2/_catalog
结合python查看 镜像与版本
import requests import json import traceback repo_ip = '10.100.4.20' 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 a=getImagesNames(repo_ip, repo_port)
案例
镜像--容器--交互--修改--提交
docker search nginx docker pull nginx docker run --name webserver -d -p 80:80 nginx docker ps docker exec -it webserver bash
>>>在容器中修改部分配置 docker commit --author "infaaf" --message "修改默认页" webserver nginx:v2 docker images
运行新镜像容器
docker stop 3c36d3a405c9 docker images docker run --name web2 -d -p 888:80 nginx:v2
docker commit 意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为黑箱镜像
定制行为应该使用Dockerfile 来完成
附:docker应用部署 perconna monitor
wget -qO- https://get.docker.com/ | sh
service docker start
docker run hello-world
docker pull percona/pmm-server:latest
docker create \
> -v /opt/prometheus/data \
> -v /opt/consul-data \
> -v /var/lib/mysql \
> -v /var/lib/grafana \
> --name pmm-data2 \
> percona/pmm-server:latest /bin/true
docker run -d \
> -p 80:80 \
> --volumes-from pmm-data \
> --name pmm-server2 \
> --restart always \
> percona/pmm-server:latest
客户端
pmm-admin config --server 192.168.188.141
pmm-admin add mysql --user root --password admin
pmm-admin list