docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

一般使用

在后台启动一个容器

docker run -d jenkins

启动一个交互式容器

docker run -it ubuntu bash

启动一个(在停止时自动删除)的容器

docker run --rm ubuntu bash 

启动一个映射端口的容器

docker run -p 80:80 -d nginx 

启动一个命名的容器

docker run --name mydb redis 

启动一个停止的容器

docker start mydb 

停止一个容器

docker stop mydb

启动一个容器并添加元数据

docker run -d \ label=traefik.backend=jenkins jenkins

Build Images

从当前目录下的dockerfile构建一个镜像

docker build --tag myimage . 

强制重建一个镜像

docker build --no-cache . 

将容器转换为镜像

docker commit c7337 myimage 

删除所有未使用镜像

docker rmi $(docker images -q -f "dangling=true")

Debug

登陆一个正在运行的容器

docker exec -it c7337 docker

显示运行守护进程容器的活动日志

docker logs -f c7337

显示容器的暴露端口

docker port c7337

Volumes

创建一个本地卷

docker volume create --name myvol 

在容器启动时挂载一个卷

docker run -v myvol:/data redis

摧毁一个卷

docker volume rm myvol 

列出所有卷

docker volume ls

创建一个本地网络

docker network create mynet 

在启动时将容器连接到网络

docker run -d --net mynet redis

将容器连接到指定网络

docker network connect mynet c7337 

断开容器与网络的连接

docker network disconnect mynet c7337

容器管理

列出运行容器

docker ps

列出所有容器(包括运行中和停止的)

docker ps -a

检查容器的元数据

docker inspect c7337

列出本地所有可用镜像

docker images

删除所有停止的容器

docker rm $(docker ps --filter status=exited -q) 

列出所有带有特定标签的容器

docker ps --filter label=traefik.backend

查询正在运行中带有特定元数据的容器

docker inspect -f '{{ .NetworkSettings.IPAddress }}' c7337

说明

镜像名

redis, jenkins, nginx

容器名或者提交ID

mydb  #容器名 
c7337 #提交ID