docker 包括三个基本概念 1.镜像(Image) 2.容器(Container) 3.仓库(Repository) docker的特性: 1.文件系统隔离:每一个进程容器运行在彻底独立的根文件系统里。 2.资源隔离:可使用cgroup为每一个进程容器分配不一样的系统资源,例如CPU和内存。 3.网络隔离:每一个进程容器运行在本身的网络命名空间里,拥有本身的虚拟接口和IP地址。 4.写时复制:采用写时复制方式建立根文件系统,这让部署变得极其快捷,而且节省内存和硬盘空间。 5.日志记录:Docker将会收集和记录每一个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。 6.变动管理:容器文件系统的变动能够提交到新的映像中,并可重复使用以建立更多的容器。无需使用模板或手动配置。 7.交互式Shell:Docker能够分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。 docker安装与启动
docker build -t cdphere/mysql:5.6 .java
docker imagesmysql
docker run -d -p 3306:3306 --name dbserver csphere/mysql:5.6
-P 大写的p 指定的端口 后面重启宿主主机的端口与容器暴露的端口会变化
docker run -d -p 3306:3306 --name dbserver -v /var/lib/docker/vfs/dir/mydata:/var/lib/mysql csphere/mysql:5.6git
docker ps -aspring
docker exec -it dbserver /bin/sh
Docker attach能够attach到一个已经运行的容器的stdin,而后进行命令执行的动做。
可是须要注意的是,若是从这个stdin中exit,会致使容器的中止。sql
docker rm -f dbserverdocker
docker stop d03 shell
ENTRYPOINT/CMD都只能在文件中存在一次,而且最后一个生效 多个存在,只有最后一个生效,其它无效!
须要初始化运行多个命令,彼此之间可使用 && 隔开,但最后一个需要为无限运行的命令,需切记!
ENTRYPOINT,表示镜像在初始化时须要执行的命令,不可被重写覆盖,需谨记 可是使用--entrypoint 也能够覆盖
CMD,表示镜像运行默认参数,可被重写覆盖网络
中止全部的container,这样才可以删除其中的images:ui
docker stop $(docker ps -a -q)
若是想要删除全部container的话再加一个指令:.net
docker rm $(docker ps -a -q)
参考资料: