前两篇介绍了dockerfile
和docker-compose.yml
文件。本篇将介绍相应的命令。
docker
build
从dockerfile创建镜像
docker build . -t name
search
从docker hub搜索镜像
sudo docker search xxx
pull
从docker hub下载镜像
sudo docker pull xxx
run
镜像->容器; 运行容器
docker run -it -d -p "0.0.0.0:6666:2333" -h "host" -v ./data:/data --name="name" cmd
-it interactive & tty
-d 后台运行
-p 端口映射 本地:容器
-v 挂载数据卷 本地:容器
映射多个端口或挂载多个数据卷的话 就用多个 -p / -v
-h 容器的hostname
–name 容器name
cmd 容器执行的命令
commit
容器->镜像; 打包容器为镜像
docker commit container_name image_name
exec
在容器执行命令
和run差不多,run是从镜像创建容器后执行命令,exec是对正在运行的容器执行命令
docker exec -it xxx /bin/bash
xxx 为容器名/ID
-it interactive & tty
logs
docker logs xxx
xxx 为容器名/ID
images
显示镜像信息
ps
显示容器信息
docker ps -a
-a 全部容器,包括已经关闭的
container
容器管理命令
显示容器信息
docker container ls -a
相当于
docker ps -a
详细信息
docker inspect xxx
其他的没啥
cp
本地与容器间复制文件
docker cp xxx:/home/dir ./
docker cp ./2333 xxx:/home/dir
和scp差不多 格式为 容器名:路径
不用加-r,默认递归复制文件夹下所有文件/文件夹
容器关闭后也可cp
start
开启容器
kill
关掉容器
rm
删除容器
rmi
删除镜像
login
登录docker hub
push
上传镜像
docker-compose
docker-compose命令会根据compose文件中的信息对容器进行相关操作
默认的compose文件是docker-compose.yml
,也可以通过-f 指定compose文件:
docker-compose -f xxx.yml
所以,须在docker-compose.yml文件所在的文件目录下执行docker-compose命令(如果使用默认compose文件)
创建镜像
根据dockerfile创建镜像,一般是更新dockerfile后使用
docker-compose build
启动服务
docker-compose up -d
这条命令会启动compose文件中services下定义的所有的容器
-d 选项可让服务后台运行
如果没有build过镜像,这条命令会先build镜像,然后再部署容器
查看进程
docker-compose ps -a
-a 选项可显示全部进程,包括正在运行的和已经关闭的
关闭容器
docker-compose kill
这条命令会终止compose文件中services下定义的所有的容器
删除容器
docker-compose rm -f
这条命令会删除compose文件中services下定义的所有的容器
-f 选项可强制删除(无提示信息)
重启服务
docker-compose restart
这条命令会重启compose文件中services下定义的所有的容器
查看日志
如果某个容器挂掉了,查看日志是必不可少的
docker-compose logs xxx
xxx 为 services中定义的服务名字
比如
version: "3"
services:
webapp:
image: redis:4
# ...
查看日志的命令为
docker-compose logs webapp
执行命令
docker-compose exec xxx [cmd]
在xxx容器中执行命令
命令必须是绝对路径
e.g. 执行/bin/sh
docker-compose exec xxx /bin/sh
run
docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] SERVICE [COMMAND] [ARGS...]
和docker的差不多