容器
列出容器:
docker ps [OPTIONS]
OPTIONS说明:
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- –format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- –no-trunc :不截断输出。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
杀死容器:
杀死某个容器
docker kill 容器ID
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除容器
删除某个容器
docker rm 容器ID
删除所有已经停止的容器
docker rm $(docker ps -a -q)
重启容器
docker restart 容器ID
启动和停止容器
#停止容器
docker stop 容器id或者容器名
#启动容器
docker start 容器id或者容器名
创建容器
实际上是有docker create方法的,这样就是创建一个容器,并不会运行,run相当于create+start,新版docker推荐使用run
docker run [OPTIONS]
- -i:表示创建并运行容器
- -t:表示容器启动后会进入其命令行。通常于-i一起使用:-it表示创建并运行容器,且运行之后自动进入为当前应用打开一个默认终端
- –name :为创建的容器命名。
- -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。
- -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行,与-t相反。
- -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口,程序访问是通过宿主机映射端口来访问容器的。可以使用多个-p做多个端口映射。
- -e:表示添加容器的环境变量。
- –rm:让容器在退出时,自动清除挂在的卷,以便清除数据。等价于在容器退出后,执行docker rm -v。
交互式的方式创建容器:
这样的方式我们直接就进入了容器内部
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
后台式创建容器:
这样的方式创建成功之后没有进入容器内部
docker run -id --name=容器名称 镜像名称:标签
如果想要进入容器内部可以用下面的命令:
docker exec -it 容器名称(或者容器ID) /bin/bash
目录映射
我们可以在创建容器的时候通过 -v参数,将宿主机的目录文件与容器内的目录文件进行映射,这样我们就可以通过修改宿主机目录文件从而去影响容器。
#格式:创建容器 –v 宿主机的目录:容器的目录
docker run -id -v /usr/local/dunm.rdb:/data/dunm.rdb --name=myRedis redis:latest
通过镜像文件创建容器
docker run -id --name=docker_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootcentos/mysql-57-centos7
MYSQL_ROOT_PASSWORD参数表示登录MySQL的root用户的密码。
配置容器磁盘使用空间大小
docker run -it --storage-opt size=120G fedora /bin/bash
镜像
列出镜像
docker images
字段说明:
- REPOSITORY:镜像名称
- TAG:镜像标签
- IMAGE ID:镜像ID
- CREATED:镜像的创建日期(不是获取该镜像的日期)
- SIZE:镜像大小
删除镜像
删除某个镜像
docker rmi 镜像ID
删除所有镜像
docker rmi $(docker images -q)
强制删除所有镜像
docker rmi -f $(docker images -q)
搜索镜像
docker search 镜像名
拉取镜像
docker pull 镜像名:版本
如果不加版本默认会为下载latest版本
制作镜像
docker build -t 镜像名 .
最后是有个“.”的,表示使用当前目录的Dockerfile构建;
-t参数表示制成的镜像名,可任意定义。
修改镜像的tag和name
docker tag 9aed1ced115f imagename:1.0.4
清理Build缓存
docker builder prune
docker-compose
启动服务
该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。
docker-compose up -d · # 不写服务名,默认启动docker-compose.yml所有服务
docker-compose up -d 服务名 # 启动docker-compose.yml的对应服务
默认情况,如果服务容器已经存在,docker-compose up 将会尝试停止容器,然后重新创建(保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml 文件的最新内容。但是不会更新已经打好的镜像,如果镜像错误,不能通过 docker-compose up 更新镜像,只能先删除镜像。如果用户不希望容器被停止并重新创建,可以使用 docker-compose up --no-recreate。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 docker-compose up --no-deps -d <SERVICE_NAME> 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。
停止服务
此命令将会停止 up 命令所启动的容器,并移除网络,但是不会移除已经打好的镜像。
docker-compose down · # 不写服务名,默认停止docker-compose.yml所有服务
docker-compose down 服务名 # 停止docker-compose.yml的对应服务
进入指定的容器
进入指定的容器。和docker的exec命令一样。
docker-compose exec 服务名 bash
列出项目中目前的所有容器
docker-compose ps # 列出所有运行的服务
docker-compose ps -q # 只列出容器的ID信息
选项:
-q 只打印容器的 ID 信息。
查看服务容器内运行的进程
查看所有服务容器内运行的进程,或者查看指定服务名的容器内运行的进程。
docker-compose up -d
docker-compose top 服务名
重启服务
-t:指定多少秒之后重启,默认10s
docker-compose restart # 对整个项目操作,默认重启全部服务
docker-compose restart 服务名 # 只重启该服务
docker-compose restart -t 20 # 20s之后重启服务
删除整个项目或者指定id的服务
删除整个项目或者指定id的服务(针对已经停止的服务)
-f:强制删除没有停止的服务
-v:删除容器所挂载的数据卷
docker-compose rm 服务名
docker-compose rm -f tomcat
日志
进入docker-compose.yml同级目录
全屏滚到底部显示最后N行并继续持续输出日志并显示时间戳:
docker-compose logs -f -t --tail=10
全屏滚到底部并继续持续输出日志:
docker-compose logs -f
全屏滚到底部结束:
docker-compose logs
查看指定服务:
docker-compose logs [服务名]