docker使用

简介: 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 volumes写dockerfile的时候无法挂载本地目录,使用 --volumes-from=容器id 来做基于volume互联 基于link互联,跨主机用connectable,实际应用不多。
#构建
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 Ubuntu
一文熟练掌握Docker使用
做开发的应该很多人都知道Docker,就算是没有用过,应该也有所耳闻。这款开源于2013年的工具一经问世,便迅速火爆起来,在微服务 、项目迁移、云等方面备受欢迎。如今它的github项目已经达到54k个star。Docker到底是什么?它有什么优点使得它如此受欢迎?到底该怎么使用?本文就从以上几点进行阐述,希望通过这篇文章能够让大家对Docker有一个清晰的认识。
一文熟练掌握Docker使用
|
Shell Docker 容器
docker使用记录一
docker使用记录一
122 0
docker使用记录一
|
NoSQL Shell Redis
docker的使用
docker的使用
129 0
|
Docker 容器
docker使用阿里云加速
安装完docker引擎后,默认使用的docker仓库,拉取镜像速度比较慢,需要修改daemon.json来进行加速。
927 0
docker使用阿里云加速
|
应用服务中间件 Linux Shell
|
关系型数据库 PHP 数据库
docker学习系列16 使用过程的一些经验总结
COPY 和 ADD 命令具有相同的特点:只复制目录中的内容而不包含目录自身。 比如 backend 目录的结构如下: --- backend -- model -- controller 如果执行 WORKDIR /app COPY backend . 容器内app底下会是model和controller目录,并不是backend目录。
1268 0
|
Linux Shell 数据安全/隐私保护
|
应用服务中间件 Linux nginx
|
数据库 Docker 容器
《Docker生产环境实践指南》——1.3 使用Docker的多种方式
过去的几年时间,科技发生了巨大变化,从物理服务器到虚拟服务器,再到拥有PaaS环境的云计算。不论是否采用了全新架构,Docker镜像都可以在当前环境中很容易地被使用。要使用Docker,并不需要立即从单体应用程序迁移到面向服务架构。有很多用例允许在不同层次上集成Docker。
2609 0