说明
//是附加注释
- 此处主要常用的命令,不是命令大全
- Mac上操作(Linux基本相同)
- Docker命令分为镜像命令、容器命令、其他命令
Docker命令
- 安装docker
CentOS6
//EPEL库
sudo yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm
sudo yum install docker-io
CentOS7
sudo yum install docker
注册为服务
sudo service docker start
sudo chkconfig docker on
镜像相关命令
Docker镜像就是一个只读的模板
- 安装Linux
docker pull centos:6 //6是版本号
- 查看所有的镜像,也包括tag在里面
docker images
- 使用仓库的Dockerfile文件,创建一个镜像
docker build -t IMAGE
- 使用当前目录的Dockerfile创建镜像,标签为gio-test/test-project:test-tag
docker build -t gio-test/test-project:test-tag . //后面有个点
- 显示这台机器上的所有镜像
docker images -a
- 从本机移除所有的镜像
docker rmi $(docker images -q)
- 移除本地test镜像
sudo docker rmi test/test //docker rm 命令是移除容器
- 上传打完tag的镜像到remote的registry
docker push username/repository:tag
- 从registry运行指定的镜像
docker run username/repository:tag
如果你没有在这些命令中指定 :tag
部分,在你生成和运行镜像时,最新的tag :latest
会被默认使用。 如果没有指定tag,Docker会使用最新的镜像版本,即latest(所以不指定会坑爹)
- 查看镜像的详细信息
docker inspect IMAGE
- 查看私有库的镜像
curl 192.168.x.x:5000/v2/_catalog
- 搜索镜像
docker search consul //consul 服务注册发现框架
- 导出镜像到本地文件
docker save -o ubuntu_14.04.tar ubuntu:14.04 //导出ubuntu到ubuntu_14.04.tar
- 从文件载入镜像
docker load --input ubuntu_14.04.tar //或 docker load < ubuntu_14.04.tar //镜像存储文件将保存完整记录,体积也要大
容器相关命令
Docker利用容器来运行应用,容器是从镜像创建的运行实例
- 查看正在运行的所有的容器的列表
docker ps
- 停止运行指定的容器
docker stop CONTAINER_ID
- 查看所有的容器列表,包括没有在运行的
docker ps -a
- 强行关闭指定的容器
docker kill CONTAINER_ID //CONTAINER_ID是容器ID
- 从这台机器上移除所有未运行的容器
docker rm $(docker ps -a -q)
- push文件到docker的某个容器中
docker cp squid.conf CONTAINER_ID:/etc/squid
- 进入运行的容器
docker exec -it CONTAINER_ID /bin/bash //可能有镜像的多个实例,需要指定运行的容器ID,而不是镜像ID,根据需要bash换成sh也可以
- 将本地目录挂载到docker容器上
docker run -i -t -v /Users/xx:/etc/squid3 IMAGE /bin/bash //docker run -i -t -v 本地绝对路径:docker上绝对路径 镜像ID /bin/bash
- 将本地目录挂载到docker容器上并加端口映射启动容器
docker run -p 12345:3128 -i -t -v /Users/xx:/etc/squid3 IMAGE /bin/bash
- 运行镜像,并且映射主机端口12345 到容器端口 3128(默认)
docker run -p 12345:3128 IMAGE //是镜像ID,下同
- 同上,但是此条命令是把镜像运行在后台进程中
docker run -p -d 12345:3128 IMAGE //-d表示后台运行
- 进入正则运行的容器,并执行命令
docker exec -it CONTAINER_ID /bin/bash-c "ls" //ls是需要执行的命令
- 将一个已经终止的容器启动运行起来
docker start
- 重新启动
docker restart
- 提交容器修改
docker commit CONTAINER_ID IMAGE //不提交下次启动就是新的,里面修改都没有
- 修改自己commit的容器tag
docker tag IMAGE_ID userName/repositoryName:tag //需要执行docker login,即时使用图形界面登陆过
- 使用本地配置文件启动squid代理
docker run -p 3128:3128 -i -t -v /Users/xx:/etc/squid3 IMAGE
- 导出容器快照到本地文件
docker export CONTAINER_ID > fileName.tar
- 从容器快照文件中再导入为镜像
cat fileName.tar | sudo docker import - test/test:1.0
- 通过指定URL或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo //容器快照文件将丢弃所有的历史记录和元数据信息
其他
- 推送到私服
docker push 192.168.x.x:5000/docker-repo/squid:3.3.8-14
- docker的运行开启HTTP配置
/Users/xx/.docker/daemon.json //使用安装包安装的 { "debug" : true, "insecure-registries" : [ "192.168.x.x:5000" ], "experimental" : true }
- 拷贝docker的文件到本地
docker cp CONTAINER_ID:/etc/squid3/squid.conf /Users/xx/xx
- 本地文件拷贝到docker
docker cp 本地路径 容器ID:容器路径
- 查看docker的端口映射
docker port CONTAINER_ID
- 给容器安装vim命令
apt-get update //同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引 apt-get install vim //安装命令,其他类似(先登录进运行的容器,关闭容器则失效)
- 查看squid代理的链接访问日志
tail -f /var/log/squid/access.log //根据版本可能是squid3
- 容器内的Linux安装Apache
apt-get install apache2=2.4.29-1ubuntu4.5 //后面是版本号
- 使用Docker credentials 登录到CLI会话
docker login
- 添加squid的证书
sudo htpasswd -c squid_passwd dreamylost
K8s命令
- 端口映射
映射本地端口到远程k8s容器的pod上的端口,以k8s-ads-tracking的server-1为例 1.查询所有运行的pods并以k8s-ads-tracking开头的 kubectl -n k8s-ads-tracking get pods --kubeconfig=/Users/name/project-conf/k8s-config k8s-config是k8s的验证配置文件,有秘钥 2.进入运行的pod 选择server-1 kubectl -n k8s-ads-tracking exec -ti k8s-ads-tracking-server-1-85f4ff5fcb-9b9bs bash --kubeconfig=/Users/name/project-conf/k8s-config 3.查看网络连接 netstat -antp | grep 1 4.映射端口 kubectl -n k8s-ads-tracking port-forward k8s-ads-tracking-server-1-85f4ff5fcb-9b9bs 19000:19000 --kubeconfig=/Users/name/project-conf/k8s-config 5.完成将本地19000端口映射到k8s环境的`k8s-ads-tracking-server-1-85f4ff5fcb-9b9bs`实例上的19000端口上
- 获取Pod的运行状态
kubectl get pods //以nginx为例,下同
- 获取Pod中所有容器的运行状态
kubectl get pods nginx -o json //json以json形式展示,wide以直接铺开的形式展示
- 获得Pod的更多详细信息
kubectl describe pods nginx
- 根据Pod的名称删除指定的Pod
kubectl delete pods/nginx
- 根据yaml配置文件删除Pod
kubectl delete -f pod-nginx.yaml
- 进入到容器内部
kubectl exec -it nginx bash
- 如果Pod中有多个容器,可以使用-c参数指定具体的容器
kubectl exec -it nginx bash -c nginx
- 观察容器的输出日志
kubectl logs nginx // -f --tail 200 等价 tail命令的tail -200f
- 获取所有配置
kubectl get configmaps
- 获取某个Pod的配置
kubectl get configmaps nginx-configs
- 编辑配置
kubectl edit configmaps nginx-configs //zsh装了k8s插件后可以提示有哪些配置文件,如果不想重新部署时镜像配置失效,可以放到全局配置
- 删除Pod
kubectl delete pods nginx-6c5f5ff6fd-fqtl9 //修改Pod配置后需要删除Pod,使其自动重启生效。
待补充。。。
最详细的 在Windows上 使用docker 搭建 consul 集群
PS: 镜像可以理解是已经打包的开放包,容器是包的一次执行,与运行时相关的一般都使用容器CONTAINER_ID
文档信息
- 本文作者:梦境迷离
- 本文链接:https://blog.dreamylost.cn/wiki/docker%E4%B8%8Ek8s%E7%9A%84%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)