docker命令

80 阅读3分钟
  1. 启动docker
sudo systemctl start docker
  1. 查看本地image列表
sudo docker image ls

简写

docker images
  1. 拉取镜像, version可选
sudo docker pull <name> <version>

解决命令行下不输入sudo,sudo添加是因为没有docker命令执行权限;

  1. 添加到docker组
sudo groupadd docker
sudo gpasswd -a vagrant docker

最后重启docker服务

sudo service docker restart

最后退出重新登录shell

  1. 运行镜像
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
  1. 查看当前容器列表
docker container ls
  1. 查看当前容器,包括不在运行的
docker container ls -a

简写

docker ps -a
  1. 删除container, dc是容器的id,可以不写全
docker container rm dc

简写

docker rm dc
  1. image删除, imageId
docker image rm 23dwerrsd

简写

docker rmi 23dwerrsd
  1. 查看容器的id
docker container ls -aq
  1. 批量删除container
docker rm $(docker container ls -aq)
  1. 只查询退出的container
docker container ls -f "status=exited" -q
  1. 批量删除退出的container
docker rm $(docker container ls -f "status=exited" -q)
  1. 把一个container commit为一个image
docker commit epic_davinci fanxl12/centos-vim

epic_davinci 为container的name
docker commit 是 docker container commit的简写
这种方法不推荐,推荐使用Dockerfile来构建image,Dockerfile会有构建说明

  1. 进入正在运行的容器内部,执行一个命令 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
  1. 指定运行容器的名称–name
docker run -d --name=demo fanxl12/flask-hello-world
  1. 容器的停止和启动
docker stop name/id
docker start name/id
  1. 显示容器的详细信息 inspect
docker inspect 99e21689d98f
  1. 查看容器运行的logs 容器id
docker logs 99e21689d98f
  1. 在build image过程中报错,我们可以进入到build每个阶段的容器中进行调试
docker run -it 73eed5f2c240 /bin/bash

73eed5f2c240 为build过程中的临时容器id

  1. 运行容器传入参数
    Dockerfile定义, ENTRYPOINT 加CMD实现,CMD接收参数
ENTRYPOINT ["/usr/bin/stress"]
CMD []

运行, --vm 1 --verbose为传入的参数

docker run -it fanxl12/ubuntu-stress --vm 1 --verbose
  1. 运行容器传入参数
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}'`