- 启动docker
sudo systemctl start docker
- 查看本地image列表
sudo docker image ls
简写
docker images
- 拉取镜像, version可选
sudo docker pull <name> <version>
解决命令行下不输入sudo,sudo添加是因为没有docker命令执行权限;
- 添加到docker组
sudo groupadd docker
sudo gpasswd -a vagrant docker
最后重启docker服务
sudo service docker restart
最后退出重新登录shell
- 运行镜像
docker run hello-word
-d 后台运行
–name xxx 指定名称
-p 80:80 将容器的80端口映射到本地80
后台运行 -d 参数
6. docker构建image
docker build -t fanxl12/hello-world .
docker build是docker image build的简写
7. 查看image的分层, 9b82dcc7ae9c为imageId
docker history 9b82dcc7ae9c
- 查看当前容器列表
docker container ls
- 查看当前容器,包括不在运行的
docker container ls -a
简写
docker ps -a
- 删除container, dc是容器的id,可以不写全
docker container rm dc
简写
docker rm dc
- image删除, imageId
docker image rm 23dwerrsd
简写
docker rmi 23dwerrsd
- 查看容器的id
docker container ls -aq
- 批量删除container
docker rm $(docker container ls -aq)
- 只查询退出的container
docker container ls -f "status=exited" -q
- 批量删除退出的container
docker rm $(docker container ls -f "status=exited" -q)
- 把一个container commit为一个image
docker commit epic_davinci fanxl12/centos-vim
epic_davinci 为container的name
docker commit 是 docker container commit的简写
这种方法不推荐,推荐使用Dockerfile来构建image,Dockerfile会有构建说明
- 进入正在运行的容器内部,执行一个命令 exec命令
比如执行bash命令
docker exec -it 18d694f9b358 /bin/bash
或者
docker exec -it 18d694f9b358 /bin/sh
或者去运行容器内部的python
docker exec -it 18d694f9b358 python
查看运行容器运行的ip地址
docker exec -it 18d694f9b358 ip a
- 指定运行容器的名称–name
docker run -d --name=demo fanxl12/flask-hello-world
- 容器的停止和启动
docker stop name/id
docker start name/id
- 显示容器的详细信息 inspect
docker inspect 99e21689d98f
- 查看容器运行的logs 容器id
docker logs 99e21689d98f
- 在build image过程中报错,我们可以进入到build每个阶段的容器中进行调试
docker run -it 73eed5f2c240 /bin/bash
73eed5f2c240 为build过程中的临时容器id
- 运行容器传入参数
Dockerfile定义, ENTRYPOINT 加CMD实现,CMD接收参数
ENTRYPOINT ["/usr/bin/stress"]
CMD []
运行, --vm 1 --verbose为传入的参数
docker run -it fanxl12/ubuntu-stress --vm 1 --verbose
- 运行容器传入参数
sudo docker run -d -p 5000:5000 --link redis --name flask-redis -e REDIS_HOST=redis fanxl12/flask-redis
命令解析:
-d 后台运行
-p 容器端口映射到本地
–link redis 和redis容器做网络的链接
–name flask-redis 容器名称指定为flask-redis
-e 携带参数,键值对的形式传入
直接删除所有镜像或容器
# 直接删除所有镜像
docker rmi `docker images -q`
# 直接删除所有容器
docker rm `docker ps -aq`
按xxxxx名称筛选之后删除
# 按条件筛选之后删除镜像
docker rmi `docker images | grep xxxxx | awk '{print $3}'`
# 按条件筛选之后删除容器
docker rm `docker ps -a | grep xxxxx | awk '{print $1}'`
清除无用游离镜像
docker image prune
清除docker无用的缓存
docker system prune -a
这个命令使用的时候注意,它会删掉没有运行的容器和镜像,确定是否是没用的,不然就都删除了
查询/目录下大于100MB的文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr
docker查看容器做了哪些修改
docker diff xxx
docker容器配置更新
docker update
docker容器提交成一个新的镜像
docker commit -a fanxl -m "init new another redis" redis redis:myRedis
限制docker容器的日志大小
全局设置
新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:
# vim /etc/docker/daemon.json
{
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}
}
max-size=500m,意味着一个容器日志大小上限是500M,
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。
// 重启docker守护进程
systemctl daemon-reload
systemctl restart docker