Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。
Docker技术的三大核心概念,分别是:
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
简单理解三者的对应关系:
其中,dockerfile是一种被docker程序解释的脚本,有一条一条的指令组成,每条指令对应Linux下的一条命令,docker程序解析这些命令间的依赖关系,根据指令生成定制的image。
常用命令:
- docker images #列出所有本地的docker images
- docker pull {REPOSITORY}:{TAG} #如docker pull dockerhub.xxx.com/rdb:cr 根据仓库名和标签拉取最新的docker 镜像
- docker rmi IMAGE_ID #删除指定的images
- docker ps -a #显示所有的docker,包含不运行的;不使用-a则只显示正在运行的docker
- 使用docker ps -a查看docker images ,再使用docker port container ID 可以查看该容器的端口映射情况
- docker run {REPOSITORY}:{TAG} #启动docker 容器
- docker start container ID #start docker
- docker stop container ID #停止docker 容器,它的状态改为Exited,如果启动docker时加了--rm参数,使用该命令后容器会被自动删除
- docker rm container ID #删除存在的docker 容器
- ssh roaddb@${ip} -p ${port}或docker attach container ID #进入docker
- 如果不用ssh 登录本机docker,使用docker attach container ID只能进入主进程,最好使用下面的方式登录,:
- docker exec -ti practical_neumann bash
- docker exec -ti fe7c1b00e982 bash
- (practical_neumann和container的ID都可以使用)
举栗:
docker run --rm -it -v ${PWD}:/data -w /data -v /tmp:/tmp -h localhost.xxx.xxx.com -p 2242:22 -p 8042:8085 --dns xx.xx.xx.xx dockerhub.xxx.com/rdb:cr bash
- --rm退出时自动删除docker容器,不使用该参数时电脑关机也不会影响到docker 容器
- -i 以交互模式运行容器,通常和-t同时使用
- -t 为容器重新分配一个伪输入终端,通常和-i同时使用
- -v ${PWD}:/data #本机文件目录:docker内文件目录,将本地磁盘目录映射到docker容器的目录,可以使用多个-v映射多个目录
- -w /data #设置工作目录
- -p 2242:22 #本机访问端口:docker内的端口,将docker内的ssh端口映射到本机2242端口,提供ssh访问
- -h localhost.xxx.xxx.com #设置docker容器的hostname
- dockerhub.xxx.com/rdb:cr #指定docker image镜像,可以通过docker images命令查看镜像列表
- bash #启动命令
其中,bash --dns可以不用