Docker命令大全

半兽人 发表于: 2017-08-21   最后更新时间: 2022-11-16 12:59:56  
{{totalSubscript}} 订阅, 8,341 游览

查看

# 查看信息
docker info

# 容器运行状态,不想持续的监控,通过 --no-stream 只输出当前的状态:
docker stats

# 查看版本
docker version 

# 搜索可用docker镜像
docker search tutorial

# 查看运行中的进程
docker ps

# 查看全部
docker ps -a
docker ps -all

# 显示最后运行
docker ps -l

# 查看该容器的详细信息
docker inspect 44fc0f0582d9

# 由其该信息非常多,只截取了其中一部分进行展示。如果要显示该容器第一个进行的PID可以使用如下方式
docker inspect -f {{.State.Pid}} 44fc0f0582d9

# 查看容器ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos3

镜像

# 查看docker镜像
docker images

# 删除镜像
docker images rmi

# 构建一个镜像
docker build -t holiday:v1 /usr/local/docker/holiday

# 打包提交拉取
docker tag kafka-monitor:v1 kubebiz/kafka-monitor:v1
docker push kubebiz/kafka-monitor:v1
docker pull kubebiz/kafka-monitor:v1

# 停止所有容器
docker ps |grep holiday |awk '{print $1}' |xargs -i docker stop {}

# 提交一个镜像
docker commit 1a442630f4a9 test/javaweb:0.0

使用docker exec进入Docker容器

# 使用该命令进入一个已经在运行的容器
docker ps

docker exec -it 775c7c9ee1e1 /bin/bash

日志

# docker日志查询
docker logs 2f2de065fd05

停止与删除

# 杀死所有正在运行的容器
docker kill $(docker ps -a -q)

# 删除所有已经停止的容器
docker rm $(docker ps -a -q)

# 删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q -f dangling=true)

# 删除所有镜像
docker rmi $(docker images -q)

从容器中复制文件

docker cp 371f3ff1f43b:/usr/local/bin/etcdctl /usr/local/bin/etcdctl

别名

# 杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'

# 删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'

# 删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'

# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'

运行

# 运行docker镜像
docker run -i -t -v /root/software/:/mnt/software/ --privileged=true index.alauda.cn/alauda/ubuntu /bin/bash

# 运行一个jenkins镜像的例子命令
sudo docker run \
    -d -p 8088:8080 -p 50000:50000 \
    -v /home/docker/jenkins_home/:/var/jenkins_home \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v $(which docker):/usr/bin/docker \
    -v $(which git):/usr/bin/git \
    -v ~/.ssh:/var/jenkins_home/.ssh \
    --name=jenkins jenkinsci/jenkins

# 运行一个tomcat
docker run --name tomcat-demo -m 1G tomcat:9.0.39-jdk8-openjdk

一个完整的运行步骤

# 第一次运行
sudo docker run --name myjenkins -p 8088:8080 -p 50000:50000 -d docker.io/jenkinsci/jenkins

# 停止
docker stop  myjenkins

# 启动(是没有问题的)
docker start myjenkins

# 重新commit一个新的
docker ps -a 获取到ff2d09d0ddd8

# 提交一个成为新镜像
docker commit ff2d09d0ddd8 test/jenkins:0.2

查看docker运行容器的ip

# 第一次运行
sudo docker run --name myjenkins -p 8088:8080 -p 50000:50000 -d docker.io/jenkinsci/jenkins

# 1. 进入容器内部后
cat /etc/hosts
会显示自己以及(– link)软连接的容器IP

# 2.使用命令
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-ID> 
或 
docker inspect <container id> 
或 
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

# 3. 可以考虑在 ~/.bashrc 中写一个 bash 函数:
    function docker_ip() {
        sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' $1
    }

    source ~/.bashrc 然后:

    $ docker_ip <container-ID>
    172.11.0.6

# 4.要获取所有容器名称及其IP地址只需一个命令。
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
如果使用docker-compose命令将是:
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

# 5.显示所有容器IP地址:
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
更新于 2022-11-16

查看docker更多相关的文章或提一个关于docker的问题,也可以与我们一起分享文章