由于数据源限制,完成安装后可修改 /etc/docker/deamon.json 在 registry-mirrors 中加入阿里、百度等镜像源:
"https://mirror.aliyuncs.com",
"https://mirror.baidubce.com",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"

一、Docker 启动关闭

查基础信息 sudo docker info
查询状态 systemctl status docker
关闭进程 systemctl stop docker
启动进程 systemctl start docker
重启进程 systemctl restart docker

二、镜像管理 images

查看所有镜像: sudo docker images
查看单个镜像: sudo docker images 镜像ID(或镜像名)
拉取 DockerHub 中的公共镜像仓库:sudo docker pull repositories名称: 版本号
把本地镜像推到 DockerHub: sudo docker push repositories名称:版本号
登录 DockerHub:sudo docker login
根据 dockerfile 生成镜像:sudo docker build -t 镜像名称:tag版本标签 dockerfile路径
dockerfile文件路径为必填项,如果文件在当前目录下可用 . 代替)
如果想推向 DockerHub ,镜像名称应与 repositories名称 一致。
tag版本标签可省略,此时docker会自动生成标签 latest
sudo docker build -t leslies2/website1:v1.0 /dockerApp/website
删除镜像: sudo docker rmi 镜像名

保存镜像 sudo docker save -o 名称.tar 镜像名:tag
例如 sudo docker save -o ubuntu.tar ubuntu:24.04 把ubuntu24.04镜像保存为ubuntu.tar
读取镜像 sudo docker load -i 名称.tar
例如 sudo docker load -i ubuntu.tar 读入ubuntu.tar镜像

三、容器管理 containers

  1. docker run -d 带前台操作命令
    -d 表示启动一个带前台操作的进程,例如 jar springboot redis nginx 等镜像。
    如果单单启动不带前台操作的的进程,例如 ubuntu jdk 等,容器就会立即关闭。

注册容器 sudo docker run -d -p 主机IP(可省略):主机端口:容器端口 --network=网络模型 --name 容器名称 镜像名称
-d 代表在后台运行(可省略) -p 端口映射,如果不填有可能主机无法直接访问服务
--name 填写后可以直接通过名称操作容器,否则只能通过 ID 操作 --network 如果不填默认使用 bridge 桥接模式
sudo docker run -d -p 127.0.0.1:8081:8081 --network=host --name website1 leslies2/website1:v1.0
注意 0.0.0.0 地址可接受外网访问,127.0.0.1 只能接受本机内部访问

  1. docker run -it 不带前台操作命令
    -it 表示启动一个不带前台操作的进程,例如 ubuntu jdk 等镜像
    使用 -it 的容器会保持在持续运行的状态
    sudo docker run -it --name ubuntu24 ubuntu:24.04

查看容器端口使用情况 sudo docker ps -l
查看正在运行容器 sudo docker ps
查看所有容器 sudo docker ps -a
停止容器 sudo docker stop 容器ID或容器名
启动容器 sudo docker start 容器ID或容器名
重启容器 sudo docker restart 容器ID或容器名
删除容器 sudo docker rm 容器ID或容器名

四、常用命令

查看 docker 的网络状态: docker network ls
查看容器详细情况 docker inspect 容器ID或容器名
查看容器的IP地址 docker inspect 容器ID或容器名 | grep IPAddress

执行容器内部命令 docker exec -it 容器名 命令
sudo docker exec -it ubuntu20.04 /bin/bash 直接进入ubuntu容器
sudo docker exec -it ubuntu20.04 ifconfig 在ubuntu容器中执行ifconfig命令

容器网络状态:使用 docker run 生成容器时可加入 --network=参数进行配置
容器分为4种:bridge 桥接 、host 与主机共享网络(只在linux有效,windows无效) 、container 与另一个容器共享 network( k8s中单个service中的多个 pod 就是使用此模式)、none(容器有独立的network , 可通过手动配置)
下面命令是建立容器website2与website1共享网关:
sudo docker run -d --network=container:website1 -p 8081:8081 --name website2 leslies2/website2:v1.0
开通远程启动模式连接Jenkins:修改 /usr/lib/systemd/system/docker.service 文件,设置 ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 然后执行sudo systemctl daemon-reload ,重启 docker 后生效。此时 Jenkins 可在节点管理中通过 tcp://139.9.183.195:2375 远程连接到 docker
在ubuntu 容器中无法使用 ufw allow 命令开通端口,在深度在进入容器时加入参数 privileged 以特权模式进入容器
sudo docker exec -it --privileged 容器 bash

五、嵌套式命令

docker rm $(docker ps -a | grep "myproject") 删除所有包含myproject名称的容器
docker stop $(docker ps -a | grep "myproject" | awk '{print $1}') 暂停容器名称包含 myproject 容器ID第一个字母为1的容器
docker rmi $(docker images | grep "myproject") 删除所在镜像名称包含 myproject的镜像