## Docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
它是一项虚拟化技术,应用场景广泛如web部署 可以快速部署我们的应用。cgroup 技术帮我们实现资源的限制 namespace 来完成对资源的隔离。
## docker的安装
参考文档:[https://blog.csdn.net/nimoyaoww/article/details/79155489](https://blog.csdn.net/nimoyaoww/article/details/79155489)
## docker的基本操作
~~~
docker images 查看本地的镜像
docker search 镜像名 搜索网上的相关镜像
docker pull 镜像名 拉取你要的镜像
docker rmi 镜像名 删除镜像
docker save 镜像名|gzip>>保存的文件名.tar.gz 将拉取下来的镜像保存在本地
docker load < 保存的文件名.tar.gz 将保存的镜像文件重新加载
docker inspect 容器名或id 能查看到此容器的信息
docker logs 容器名或id 查看日志 如果加了-f 参数就可以动态查看日志
docker run -it 镜像名 (bash/sh)进入时使用的shell方式
~~~
-t 分配一个伪终端
-i 让容器的标准输入保持一个打开的状态
~~~
--name 名字 可以给我们的容器起一个名字
--rm 退出容器的时候 自动删除容器
docker ps 查看正在运行的容器
-a 能显示那些已经关掉的容器
docker rm 容器id或者容器名字 删除容器(加-f表示强制删除)
docker attach 容器名字或id 进入到一个启动中的容器(退出容器自动停止)
docker exec -it 容器名字 bash/sh 进入到一个启动中的容器(退出容器不停止)
exit 可以退出当前的容器
docker commit -m "注释" 容器名字或id 生成的镜像的名字 将现有的容器生成新的镜像保存在本地仓库
~~~
docker网络映射
端口映射
\-P 随机映射
\-p 主机端口:容器端口
~~~
docker run -it -d --name 名字 -p 主机端口:容器端口 容器名
~~~
数据卷
~~~
docker run -it -d --name 名字 -v 宿主机目录:容器目录 容器名
~~~
数据卷容器
~~~
docker run -it -d --name 名字 --volumes-from 容器名
~~~
容器互联
~~~
先启动一个容器 docker run -d --name web1 -p 80:80 ningx
在启动一个容器: docker run -d --name web2 --link web1 -p 8080:80 ningx
~~~
基础的Dockerfile的编写(文件名必须叫Dockerfile)
~~~
FROM ubuntu
MAINTAINER liuda liuda@1000phone.com
RUN apt-get update
RUN apt-get install nginx -y
RUN echo "daemon off;">>/etc/nginx/nginx.conf
#设置开放端口
EXPOSE 80
# 默认在容器启动的时候执行的命令
CMD ["nginx"]
~~~
构建命令
~~~
sudo docker build -t 标签名字 ./
~~~
上传自己的镜像到仓库
* 1 docker login 可以加你的docker网址 默认是[https://hub.docker.com](https://hub.docker.com/)
* 2 给你的镜像打标签 docker tag 镜像名/id 用户名/存到远端叫什么:tag标签
* 3 docker push 第2步 镜像名/id后边跟的 名字
~~~
sudo docker login
sudo docker images
sudo docker tag 77b3321ee9b8 whoareyou0401/1805ubuntu
sudo docker push whoareyou0401/1805ubuntu
~~~
补充
~~~
sudo docker start 0b4bb44bfa81 运行一个停止的容器
sudo docker inspect --format "{{.State.Pid}}" 0b4bb44bfa81 获取指定id的容器的进程PID
sudo nsenter -t 2916 -u -i -n -p 进入到一个运行中的容器(推荐方式,2916是容器进程PID)
sudo docker ps -a -q 获取容器id
sudo docker kill $(sudo docker ps -a -q) 杀死一个运行的容器进程
sudo docker logs 容器id 查看容器的访问日志
~~~
- Python学习
- Python基础
- Python初识
- 列表生成式,生成器,可迭代对象,迭代器详解
- Python面向对象
- Python中的单例模式
- Python变量作用域、LEGB、闭包
- Python异常处理
- Python操作正则
- Python中的赋值与深浅拷贝
- Python自定义CLI三方库
- Python并发编程
- Python之进程
- Python之线程
- Python之协程
- Python并发编程与IO模型
- Python网络编程
- Python之socket网络编程
- Django学习
- 反向解析
- Cookie和Session操作
- 文件上传
- 缓存的配置和使用
- 信号
- FBV&&CBV&&中间件
- Django补充
- 用户认证
- 分页
- 自定义搜索组件
- Celery
- 搭建sentry平台监控
- DRF学习
- drf概述
- Flask学习
- 项目拆分
- 三方模块使用
- 爬虫学习
- Http和Https区别
- 请求相关库
- 解析相关库
- 常见面试题
- 面试题
- 面试题解析
- 网络原理
- 计算机网络知识简单介绍
- 详解TCP三次握手、四次挥手及11种状态
- 消息队列和数据库
- 消息队列之RabbitMQ
- 数据库之Redis
- 数据库之初识MySQL
- 数据库之MySQL进阶
- 数据库之MySQL补充
- 数据库之Python操作MySQL
- Kafka常用命令
- Linux学习
- Linux基础命令
- Git
- Git介绍
- Git基本配置及理论
- Git常用命令
- Docker
- Docker基本使用
- Docker常用命令
- Docker容器数据卷
- Dockerfile
- Docker网络原理
- docker-compose
- Docker Swarm
- HTML
- CSS
- JS
- VUE