docker 常用命令

Docker 简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 环境安装

  • 安装命令如下:
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 也可以使用国内 daocloud 一键安装命令:
    curl -sSL https://get.daocloud.io/docker | sh
  • 启动docker:
    systemctl start docker
  • 停止docker:
    systemctl stop docker
  • 重启docker:
    systemctl restart docker
  • docker开机自启动
    systemctl enable docker

Docker 镜像常用命令

1. 搜索镜像
docker search java

2. 下载镜像
docker pull java:8

3. 查找镜像支持的版本
由于docker search命令只能查找出是否有该镜像,不能找到该镜像支持的版本,所以我们需要通过docker hub来搜索支持的版本。

进入docker hub的官网,地址:hub.docker.com 搜索需要的镜像,查看镜像支持的版本

4. 列出镜像
docker images

5. 删除镜像

  • 指定名称删除镜像
    docker rmi java:8
  • 指定名称删除镜像(强制)
    docker rmi -f java:8
  • 强制删除所有镜像
    docker rmi -f $(docker images)

Docker 容器常用命令

新建并启动容器

docker run -p 80:80 --name nginx -d nginx:1.17.0

  • -d选项:表示后台运行
  • –name选项:指定运行后容器的名字为nginx,之后可以通过名字来操作容器
  • -p选项:指定端口映射,格式为:hostPort:containerPort
容器开机自启动
  1. 在使用docker run启动容器时,使用–restart参数来设置:
    --restart具体参数值详细信息:
no -  容器退出时,不重启容器;

on-failure - 只有在非0状态退出时才从新启动容器;

always - 无论退出状态是如何,都重启容器;

还可以在使用on - failure策略时,指定Docker将尝试重新启动容器的最大次数。默认情况下,Docker将尝试永远重新启动容器。

docker run --restart=on-failure:10 redisdocker run -d -p 5000:5000 --restart=always --name registry2 registry:2

  1. 如果创建时未指定 --restart=always ,可通过update 命令
    docker update --restart=always $ContainerName(或者$ContainerId)
列出容器
  • 列出运行中的容器:
    docker ps
  • 列出所有容器
    docker ps -a
停止容器

docker stop $ContainerName(或者$ContainerId)

比如:
docker stop nginx 或者
docker stop c5f5d5125587

强制停止容器

docker kill $ContainerName(或者$ContainerId)

启动已停止的容器

docker start $ContainerName(或者$ContainerId)

进入容器
  • 先查询出容器的pid:
    docker inspect --format "{{.State.Pid}}" $ContainerName(或者$ContainerId)
  • 根据容器的pid进入容器:
    nsenter --target "$pid" --mount --uts --ipc --net --pid
删除容器
  • 删除指定容器:
    docker rm $ContainerName(或者$ContainerId)
  • 强制删除所有容器;
    docker rm -f $(docker ps -a -q)
查看容器的日志

docker logs $ContainerName(或者$ContainerId)

查看容器的IP地址

docker inspect --format '{{ .NetworkSettings.IPAddress }}' $ContainerName(或者$ContainerId)

同步宿主机时间到容器

docker cp /etc/localtime $ContainerName(或者$ContainerId):/etc/

在宿主机查看docker使用cpu、内存、网络、io情况
  • 查看指定容器情况:
    docker stats $ContainerName(或者$ContainerId)
  • 查看所有容器情况:
    docker stats -a
进入Docker容器内部的bash

docker exec -it $ContainerName /bin/bash

修改Docker镜像的存放位置
  • 查看Docker镜像的存放位置:
    docker info | grep "Docker Root Dir"
  • 关闭Docker服务:
    systemctl stop docker
  • 移动目录到目标路径:
    mv /var/lib/docker /mydata/docker
  • 建立软连接:
    ln -s /mydata/docker /var/lib/docker