编辑
2023-08-09
笔记
0

目录

docker 安装
普通用户执行 docker 命令,需要加入到 docker 用户组里
docker 常规配置
设置镜像源
docker 命令
docker pull 从镜像仓库中拉取或者更新指定镜像
docker run 创建一个新的容器并运行一个命令
docker ps 列出容器
docker start 启动一个或多个已经被停止的容器
docker stop 停止一个运行中的容器
docker restart 重启容器
docker rm 删除一个或多个容器
docker exec 在运行的容器中执行命令
docker inspect 获取容器/镜像的元数据
显示 Docker 占用情况
进行自动空间清理
删除悬空镜像(无名称镜像)
删除所有未使用的镜像
删除所有未使用的 Volume
清理 docker build 缓存
清理所有容器日志信息
停止所有容器
删除所有容器
docker save 保存本地镜像
docker load 加载本地镜像
本地压缩镜像的保存与加载
替换国内源
Dockerfile
docker build
docker-compose
docker login 登录 (下载私有镜像或 push 镜像)
docker tag 改标签
Docker 设置代理

docker 安装

bash
# ALL linux curl https://get.docker.com/ | sh # Or wget -O - https://get.docker.com/ | sh ########################################################### ### Ubuntu # step 1: 安装必要的一些系统工具 sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release # 信任 Docker 的 GPG 公钥: sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 添加软件仓库:d echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 最后安装 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ########################################################### ### CentOS # step 1: 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3 sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo # Step 4: 更新并安装Docker-CE yum makecache fast yum -y install docker-ce docker-ce-cli docker-compose-plugin # Step 4: 开启Docker服务 systemctl enable docker systemctl start docker # 注意: # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。 # vim /etc/yum.repos.d/docker-ce.repo # 将[docker-ce-test]下方的enabled=0修改为enabled=1 # # 安装指定版本的Docker-CE: # Step 1: 查找Docker-CE的版本: # yum list docker-ce.x86_64 --showduplicates | sort -r # Loading mirror speeds from cached hostfile # Loaded plugins: branch, fastestmirror, langpacks # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable # docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable # docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable # Available Packages # Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos) # sudo yum -y install docker-ce-[VERSION]

普通用户执行 docker 命令,需要加入到 docker 用户组里

bash
sudo usermod -aG docker $USER sudo systemctl restart docker

docker 常规配置

bash
# docker-compose sudo ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose # 更方便使用 docker exec 命令 sudo tee /usr/local/bin/dssh > /dev/null << EOF #!/bin/sh docker exec -it \$1 sh EOF sudo chmod a+x /usr/local/bin/dssh

设置镜像源

bash
sudo tee /etc/docker/daemon.json > /dev/null << EOF { "registry-mirrors": [ "https://mirror.baidubce.com", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://dockerhub.azk8s.cn", "https://mirror.ccs.tencentyun.com", "https://registry.cn-hangzhou.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn" ], "insecure-registries": ["192.168.0.237:8008"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

docker 命令

docker pull 从镜像仓库中拉取或者更新指定镜像

  • -a: 拉取所有 tagged 镜像
  • --disable-content-trust: 忽略镜像的校验,默认开启
bash
docker pull centos:7

docker run 创建一个新的容器并运行一个命令

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项
  • -d: 后台运行容器,并返回容器ID
  • -i: 以交互模式运行容器,通常与 -t 同时使用
  • -P: 随机端口映射,容器内部端口随机映射到主机的端口
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
  • --name="nginx-lb": 为容器指定一个名称
  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致
  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致
  • -h "mars": 指定容器的hostname
  • -e username="ritchie": 设置环境变量
  • --env-file=[]: 从指定文件读入环境变量
  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行
  • -m :设置容器使用内存最大值;
  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
  • --link=[]: 添加链接到另一个容器
  • --expose=[]: 开放一个端口或一组端口
  • --volume , -v: 绑定一个卷
bash
docker run --rm -it centos:7 /bin/bash docker run -d --name mytomcat -p8080:8080 -v C:\source\mycode\Docker:/usr/local/tomcat/webapps tomcat

docker ps 列出容器

  • -a: 显示所有的容器,包括未运行的
  • -f: 根据条件过滤显示的内容
  • --format: 指定返回值的模板文件
  • -l: 显示最近创建的容器
  • -n: 列出最近创建的n个容器
  • --no-trunc: 不截断输出
  • -q: 静默模式,只显示容器编号
  • -s: 显示总的文件大小
bash
docker ps

docker start 启动一个或多个已经被停止的容器

docker stop 停止一个运行中的容器

docker restart 重启容器

bash
docker start mynignx docker stop mynignx docker restart mynignx

docker rm 删除一个或多个容器

  • -f: 通过 SIGKILL 信号强制删除一个运行中的容器
  • -l: 移除容器间的网络连接,而非容器本身
  • -v: 删除与容器关联的卷
bash
docker rm mynignx # 删除所有已经停止的容器 docker rm $(docker ps -a -q)

docker exec 在运行的容器中执行命令

  • -d :分离模式: 在后台运行
  • -i :即使没有附加也保持 STDIN 打开
  • -t :分配一个伪终端
bash
docker exec -it mytomcat /bin/bash

docker inspect 获取容器/镜像的元数据

  • -f 指定返回值的模板文件。
  • -s 显示总的文件大小。
  • --type 为指定类型返回JSON。
bash
docker inspect [OPTIONS] NAME|ID [NAME|ID...]

显示 Docker 占用情况

bash
docker system df

进行自动空间清理

bash
docker system prune

删除悬空镜像(无名称镜像)

bash
docker rmi $(docker images -f "dangling=true" -q) docker image prune

删除所有未使用的镜像

bash
docker image prune -a -f

删除所有未使用的 Volume

bash
docker volume rm $(docker volume ls -qf dangling=true)

清理 docker build 缓存

bash
docker builder prune -af

清理所有容器日志信息

bash
truncate -s 0 /var/lib/docker/containers/**/*-json.log

停止所有容器

bash
docker stop $(docker ps -a -q)

删除所有容器

bash
docker rm $(docker ps -a -q)

docker save 保存本地镜像

bash
docker save -o nginx.tar nginx:latest docker save > nginx.tar nginx:latest

docker load 加载本地镜像

bash
docker load -i nginx.tar docker load < nginx.tar

本地压缩镜像的保存与加载

docker save nginx:latest | gzip > nginx.tar.gz gunzip -c nginx.tar.gz | docker load

替换国内源

dockerfile
RUN sed -i 's#archive.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list

Dockerfile

dockerfile
FROM kalilinux/kali-rolling MAINTAINER cainiao <565499699@qq.com> RUN sed -i "s#http://http.kali.org/kali#http://mirrors.aliyun.com/kali#g" /etc/apt/sources.list RUN apt update && \ apt full-upgrade -y && \ apt install -y nmap && \ rm -rf /var/lib/apt/lists/* ENTRYPOINT ["/usr/bin/nmap"]

Dockerfile-cmd

docker build

bash
# --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。 # -f :指定要使用的 Dockerfile 文件 # --no-cache : 构建映像时不使用缓存 docker build -t name1/name2:tag -f Dockerfile .

docker-compose

bash
# 启动 (-d: 后台运行,-f: 指定yml文件,不写为默认 docker-compose.yml 文件) docker-compose up -d # 停止 docker-compose stop # 删除 docker-compose rm # 停止并删除 docker-compose down # 启动指定 XXX.yml 并且后台运行的容器 docker-compose -f XXX.yml up -d

docker login 登录 (下载私有镜像或 push 镜像)

bash
docker login 192.168.0.237:8008

docker tag 改标签

bash
docker tag af8f9e52dbba 192.168.0.237:8008/openmetadata/db:0.12.0

Docker 设置代理

bash
sudo mkdir -p /etc/systemd/system/docker.service.d sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null << EOF [Service] Environment="HTTP_PROXY=http://172.16.253.1:8888" Environment="HTTPS_PROXY=https://172.16.253.1:8888" Environment="NO_PROXY=localhost,127.0.0.1" EOF sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl show --property=Environment docker

本文作者:菜鸟

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 许可协议。转载请注明出处!