docker使用

#构建
docker build -t my/centos:v1 .


#开启一个容器,如果镜像不存在会自动下载
docker run -t  -i --mount type=bind,source=/c/workspace/gopath,target=/go  -p 8080:8080   golang:1.11-stretch  

#开始一个容器
docker start  -i   CONTAINER ID

#进入一个执行中的容器
docker exec -i -t  CONTAINER ID  /bin/bash

#再别的镜像的基础上修改后提交
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

#搜索镜像
docker search 

#日志
docker logs -f

#列出容器状态
docker ps -a

#查看端口映射情况
docker port CONTAINER [PRIVATE_PORT[/PROTO]]

#查看容器内的进程
docker top CONTAINER [ps OPTIONS]

#查看容器底层信息
docker inspect

#过滤信息
docker inspect -f '{{ .NetworkSettings.IPAddress }}' CONTAINER 

#停止容器
docker stop 

#删除容器,需要停止的容器才能删除,否则需要加--force
docker rm 

#创建容器内数据卷/webapp
docker run -d -P --name web -v /webapp training/webapp python app.py

#创建容器内的数据卷/webapp并挂载到宿主机的/src/webapp, 宿主机需要绝对路径
#Dockerfile无法用这种方式挂载
docker run -d -P --name web -v /src/webapp:/webapp training/webapp python app.py

#创建数据卷/dbdata 命名成dbdata 
docker run -d -v /dbdata --name dbdata training/webapp

#容器db1挂载dbdata
docker run -d --volumes-from dbdata --name db1 training/webapp

#容器db2挂载dbdata,可以让多个容器都共享同一个dbdata 
docker run -d --volumes-from dbdata --name db2 training/webapp

#要删除dbdata 需要再最后一个挂载的容器上docker rm -v,否则就算删除其他挂载容器也不会删除这个卷。

#备份、恢复或者迁移数据卷
#挂载宿主机的当前目录到容器里的/backup
#挂载/dbdata
#执行tar cvf /backup/backup.tar /dbdata, 打包/dbdata目录到/backup/backup.tar
#此时宿主机当前目录已经有backup.tar
docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

#创建需要恢复到的目录
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
#解压到对应目录
docker run --volumes-from dbdata2 -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar

#容器连接link
docker run -d --name link1 training/webapp

#--link name:alias 想link的容器:link容器的别名
docker run -d -P --name link2 --link link1:link1 training/webapp python app.py








Dockerfile

11

volumes写dockerfile的时候无法挂载本地目录,使用 --volumes-from=容器id 来做基于volume互联

基于link互联,跨主机用connectable,实际应用不多。

基于网络互联。

1.是docker-proxy,新版本移除,容器内生成虚拟网卡

2.是 --net=host,共享主机网卡。 缺陷是物理机的端口有限并且不能重复占用

3.多容器共用一个IP网络。-net=container:xxxserver 同一台机器里用localhost访问

4.docker容器里的ip让其他主机都能访问。

linux路由机制打通网络

namespace

上一篇:kubernetes StatefulSet 有状态服务


下一篇:菜鸟学Linux 第038篇笔记 日志系统 syslogd,klogd