前两篇介绍了dockerfile
和docker-compose.yml
文件。本篇将介绍相应的命令。
docker
build
从dockerfile创建镜像
1 | docker build . -t name |
search
从docker hub搜索镜像
1 | sudo docker search xxx |
pull
从docker hub下载镜像
1 | sudo docker pull xxx |
run
镜像->容器; 运行容器
1 | 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
容器->镜像; 打包容器为镜像
1 | docker commit container_name image_name |
exec
在容器执行命令
和run差不多,run是从镜像创建容器后执行命令,exec是对正在运行的容器执行命令
1 | docker exec -it xxx /bin/bash |
xxx 为容器名/ID
-it interactive & tty
logs
1 | docker logs xxx |
xxx 为容器名/ID
images
显示镜像信息
ps
显示容器信息
1 | docker ps -a |
-a 全部容器,包括已经关闭的
container
容器管理命令
显示容器信息
1 | docker container ls -a |
相当于
1 | docker ps -a |
详细信息
1 | docker inspect xxx |
其他的没啥
cp
本地与容器间复制文件
1 | docker cp 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文件:
1 | docker-compose -f xxx.yml |
所以,须在docker-compose.yml文件所在的文件目录下执行docker-compose命令(如果使用默认compose文件)
创建镜像
根据dockerfile创建镜像,一般是更新dockerfile后使用
1 | docker-compose build |
启动服务
1 | docker-compose up -d |
这条命令会启动compose文件中services下定义的所有的容器
-d 选项可让服务后台运行
如果没有build过镜像,这条命令会先build镜像,然后再部署容器
查看进程
1 | docker-compose ps -a |
-a 选项可显示全部进程,包括正在运行的和已经关闭的
关闭容器
1 | docker-compose kill |
这条命令会终止compose文件中services下定义的所有的容器
删除容器
1 | docker-compose rm -f |
这条命令会删除compose文件中services下定义的所有的容器
-f 选项可强制删除(无提示信息)
重启服务
1 | docker-compose restart |
这条命令会重启compose文件中services下定义的所有的容器
查看日志
如果某个容器挂掉了,查看日志是必不可少的
1 | docker-compose logs xxx |
xxx 为 services中定义的服务名字
比如
1 | version: "3" |
查看日志的命令为
1 | docker-compose logs webapp |
执行命令
1 | docker-compose exec xxx [cmd] |
在xxx容器中执行命令
命令必须是绝对路径
e.g. 执行/bin/sh
1 | docker-compose exec xxx /bin/sh |
run
1 | docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] SERVICE [COMMAND] [ARGS...] |
和docker的差不多