docker 使用:镜像和容器
docker 镜像
docker image是一个极度精简版的Linux程序运行环境,官网的java镜像包括的东西更少,除非是镜像叠加方式的如centos+java7,需要定制化build的一个安装包,包括基础镜像+应用的二进制部署包,内不建议有运行期需要修改的配置文件
Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等。当前目录下包含Dockerfile,使用命令build来创建新的image
docker image的最佳实践之一是尽量重用和使用网上公开的基础镜像
通过docker 拉取 一个ubuntu的镜像。
docker pull ubuntu
使用命令查看镜像是否存在:
docker images
这时候我们多了一个相应的镜像:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d131e0fa2585 10 days ago 102MB
docker 容器
使用这个镜像启动一个实例,这个实例称为容器。
Docker container是image的实例,共享内核不同的容器里可以运行不同os的image,比如Ubuntu的或者centos,不建议内部开启一个sshd服务,1.3版本后新增了docker exec命令进入容器进行排查问题,没有ip地址,通常不会有服务端口暴露,是一个封闭的沙盒。
通过镜像启动一个实例:
docker run -it -d --name ubuntu_test ubuntu
通过命令查看容器是否启动:
docker ps
得到如下结果:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de3589d1bafa ubuntu "/bin/bash" 13 minutes ago Up 13 minutes ubuntu_test
镜像和容器的删除
删除容器的时候需要确保容器没有在运行,在运行的话需要先关闭:
docker stop de3589d1bafa
然后进行删除:
docker rm de3589d1bafa
删除镜像,需要保证镜像没有被容器使用:
docker rmi d131e0fa2585
如果删除所有的容器可以使用如下:
docker stop $(docker ps -a -q)
docker rm $(docker ps -aq)
进入容器
安装完成了容器以后,想看看到底容器里面是什么,可以使用exec进入容器,例如进入ubuntu的容器中,容器跟普通的ubuntu没有什么区别:
docker exec -it de3589d1bafa /bin/bash
更多教程:大家来编程