Docker安装
卸载旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
卸载历史版本
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm -rf /data/var/lib/docker
sudo rm -rf /etc/docker/daemon.json
配置仓库
ll /etc/yum.repos.d/
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
配置使用国内源
sed -i 's@//download.docker.com@//mirrors.ustc.edu.cn/docker-ce@g' /etc/yum.repos.d/docker-ce.repo
安装docker最新版本
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
创建docker镜像安装目录
mkdir -p /data/var/lib/docker
docker镜像源和安装目录修改
vim /etc/docker/daemon.json
输入下面内容
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn/"
],
"data-root": "/data/var/lib/docker"
}启动docker
#配置加载
sudo systemctl daemon-reload
#启动服务
sudo systemctl start docker
#开启启动
sudo systemctl enable docker
#查看服务状态
sudo systemctl status docker
查看docker版本
docker version
查看docker信息
docker info
Docker镜像
登录login
docker login [server] -u 用户名 -p 密码
未指定docker server地址,默认登录docker hub
拉取镜像pull
docker pull name:tag
推送镜像push
docker push name:tag
查询镜像search
docker search name
登出仓库logout
docker logout [server]
未指定docker server地址,默认登录docker hub
标记本地镜像归入仓库tag
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker images 查看镜像列表
docker images [OPTIONS] [REPOSITORY[:TAG]]
○ -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
○ --digests :显示镜像的摘要信息;
○ -f :显示满足条件的镜像;
○ --format :指定返回值的模板文件;
○ --no-trunc :显示完整的镜像信息;
○ -q :只显示镜像 ID
docker history 查看镜像分层
docker history [OPTIONS] IMAGE
○ -H , --human :大小和日期采用人容易读的格式展现;
○ --no-trunc :显示全部信息,不要隔断;
○ -q, --quiet: 只显示镜像 id 信息;
docker image inspect 查看镜像详细信息
docker image inspect [OPTIONS] IMAGE [IMAGE...]
○ -f :指定返回值的模板文件。如 table、json
○ -s :显示总的文件大小。
docker inspect 会自动检查是镜像还是容器然后显示相信信息
docker rmi 删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
○ -f :强制删除;
○ --no-prune :不移除该镜像的过程镜像,默认移除;
docker image prune 删除未使用镜像
docker image prune [OPTIONS]
○ -a , --all : 删除全部不使用的镜像;
○ --filter filter:指定过滤条件;
○ -f, --force :不提示是否删除;
docker save / docker load 镜像归档/导入
docker save [OPTIONS] IMAGE [IMAGE...]
○ -o :输出到的文件。
docker load [OPTIONS]
○ --input , -i : 指定导入的文件,代替 STDIN。
○ --quiet , -q : 精简输出信息。
docker export / docker import镜像导出/导入
docker export [OPTIONS] CONTAINER
○ -o:写入到文件。
docker import [OPTIONS] file [REPOSITORY[:TAG]]
○ -c :应用 docker 指令创建镜像;
○ -m :提交时的说明文字
docker build 创建镜像
docker build [OPTIONS] PATH
○ --build-arg=[] :设置镜像创建时的变量;
○ -f :指定要使用的 Dockerfile 路径;
○ --label=[] :设置镜像使用的元数据;
○ --no-cache :创建镜像的过程不使用缓存;
○ --pull :尝试去更新镜像的新版本;
○ --quiet, -q :安静模式,成功后只输出镜像 ID;
○ --rm :设置镜像成功后删除中间容器;
○ --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
○ --network: 默认 default。在构建期间设置 RUN 指令的网络模式
Docker容器
docker run / docker create 运行/创建容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
○ -d: 后台运行容器,并返回容器 ID;
○ -i: 以交互模式运行容器,通常与 -t 同时使用;
○ -P: 随机端口映射,容器内部端口随机映射到主机的端口
○ -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
○ -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
○ --name="nginx-lb": 为容器指定一个名称;
○ -h "mars": 指定容器的 hostname;
○ -e username="ritchie": 设置环境变量;
○ --cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定 CPU 运行;
○ -m :设置容器使用内存最大值;
○ --network="bridge": 指定容器的网络连接类型;
○ --link=[]: 添加链接到另一个容器;
○ --volume , -v: 绑定一个卷
○ --rm :shell 退出的时候自动删除容器
docker run = docker create + docker start
docker start / stop / kill / restart 启动/停止容器
docker start CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker kill [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
○ -s :发送的信号
docker pause / docker unpause 暂停/恢复容器
docker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]
docker ps 查看容器列表
docker ps [OPTIONS]
○ -a :显示所有的容器,包括未运行的。
○ -f :根据条件过滤显示的内容。
○ --format :指定返回值的模板文件。如 json 或者 table
○ -l :显示 latest 的容器。
○ -n :列出最近创建的 n 个容器。
○ --no-trunc :不截断输出。
○ -q :静默模式,只显示容器编号。
○ -s :显示总的文件大小。
docker container inspect 查看容器详细信息
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
○ -f :指定返回值的模板文件。如 table、json
○ -s :显示总的文件大小。
docker rm 删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
○ -f :通过 SIGKILL 信号强制删除一个运行中的容器。
docker container prune 删除停止容器
docker container prune [OPTIONS]
○ -f, --force:不提示是否进行确认
docker rename 重命名容器
docker rename CONTAINER NEW_NAME
docker logs 查看容器日志
docker logs [OPTIONS] CONTAINER
○ -f ,--follow: 跟踪日志输出
○ --since :显示某个开始时间的所有日志
○ -t,--timestamps : 显示时间戳
○ -n,--tail :仅列出最新 N 条容器日志
docker attach 连接容器
docker attach [OPTIONS] CONTAINER
○ --sig-proxy:是否将所有信号代理,默认是 true,如果设置为 false,退出的话不会影响容器,否则退出会导致容器退出。
docker exec 在容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
○ -d :分离模式: 在后台运行
○ -i :即使没有附加也保持 STDIN 打开
○ -t :分配一个伪终端
○ -e :设置环境变量
○ -u,--user :指定用户 "<name|uid>[:<group|gid>]"
○ -w,--workdir:指定工作目录
docker top 查看容器中进程信息
docker top CONTAINER [ps OPTIONS]
查看容器中运行的进程信息,支持 ps 命令参数
docker stats 查看容器使用资源信息
docker stats [OPTIONS] [CONTAINER...]
○ --all , -a :显示所有的容器,包括未运行的。
○ --format :指定返回值的模板文件。如 table,json
○ --no-stream :展示当前状态就直接退出了,不再实时更新。
○ --no-trunc :不截断输出。
返回报文:
CONTAINER ID 与 NAME: 容器 ID 与名称。
CPU % 与 MEM %: 容器使用的 CPU 和内存的百分比。
MEM USAGE / LIMIT: 容器正在使用的总内存,以及允许使用的内存总量。
NET I/O: 容器通过其网络接口发送和接收的数据量。
BLOCK I/O: 容器从主机上的块设备读取和写入的数据量。
PIDs: 容器创建的进程或线程数。
docker port 查看容器端口映射
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
docker cp 在容器和宿主机之间拷贝文件
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
docker diff 查看容器文件结构更改
docker diff CONTAINER
docker commit 从容器创建一个镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
○ -a :提交的镜像作者;
○ -c :使用 Dockerfile 指令来创建镜像;可以修改启动指令
○ -m :提交时的说明文字;
○ -p :在 commit 时,将容器暂停。
docker wait 阻塞运行容器
docker wait CONTAINER [CONTAINER...]
阻塞运行直到容器停止,然后打印出它的退出代码
docker undate 更新容器配置
docker update [OPTIONS] CONTAINER [CONTAINER...]
○ --cpus:cpu 数量
○ --cpuset-cpus :使用哪些 cpu
○ --memory :内存限制
○ --memory-swap:交换内存
○ --cpu-period :是用来指定容器对 CPU 的使用要在多长时间内做一次重新分配
○ --cpu-quota:是用来指定在这个周期内,最多可以有多少时间用来跑这个容器
Docker存储卷
docker volume create 创建存储卷
docker volume create [OPTIONS] [VOLUME]
○ -d, --driver:指定驱动,默认是 local
○ --label:指定元数据
docker volume ls 查看卷列表
docker volume ls [OPTIONS]
○ --format:指定相应个格式,如 json,table
○ --filter,-f: 过滤
○ -q: 仅显示名称
docker volume inspect 查看卷详细信息
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
○ -f:指定相应个格式,如 json
docker volume rm 删除卷
docker volume rm [OPTIONS] VOLUME [VOLUME...]
○ -f,--force:强制删除
docker volume prune 删除未使用卷
docker volume prune [OPTIONS]
○ --filter:过滤
○ -f, --force :不提示是否删除
docker -v / --mount 绑定卷
docker run -v name:directory[:options] ...
○ 第一个参数:绑定卷为卷名称,创建卷为宿主机目录
○ 第二个参数:卷映射到容器的目录
○ 第三个参数:选项,如 ro 表示 readonly
--tmpfs directory
创建匿名卷,由内存管理,省略宿主机目录,指定容器目录即可。
--mount参数
--mount '<key>=<value>,<key>=<value>'
○ type : 类型表示 bind, volume, or tmpfs
○ source ,src :对于命名卷,绑定卷为卷名称,创建卷为宿主机目录。对于匿名卷,省略此字段。
○ destination,dst,target:文件或目录挂载在容器中的路径
○ ro,readonly: 只读方式挂载
如果是创建卷,宿主机目录会覆盖容器目录;
如果是绑定卷,会进行判断,如果宿主机目录为空,容器指定目录数据会给宿主机绑定卷目录拷贝一份;如果不为空,宿主机目录会覆盖容器目录。
Docker网络
docker network create 创建网络
docker network create [OPTIONS] NETWORK
○ -d, --driver:网络驱动,默认网桥bridge
网络类型:bridge,host,container,none,overlay
○ --gateway:网关地址,需要跟着指定
○ --subnet:表示网段的 CIDR 格式的子网
○ --ipv6:启用 ipv6
docker network ls 查看网络列表
docker network ls [OPTIONS]
○ -f, --filter:指定过滤条件
○ --format:指定格式
○ --no-trunc:不截断
○ -q, --quiet :仅仅显示 id
docker network inspect 查看网络详细信息
docker network inspect [OPTIONS] NETWORK [NETWORK...]
○ -f,--format:指定格式
docker network connect 容器连接网络
docker network connect [OPTIONS] NETWORK CONTAINER
○ --ip:指定 IP 地址
○ --ip6:指定 IPv6 地址
docker network disconnect 容器断开网络
docker network disconnect [OPTIONS] NETWORK CONTAINER
○ -f:强制退出
docker network rm 删除网络
docker network rm NETWORK [NETWORK...]
○ -f:强制退出
docker network prune 删除未使用网络
docker network prune [OPTIONS]
○ -f, --force :不提示
docker --network 指定网络类型
docker --network
网络类型:bridge,host,container,none,overlay
Docker编排
docker compose up 启动项目
docker compose up [options] [SERVICE...]
-d 在后台运行服务容器, 推荐在生产环境下使用该选项
--force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用
--no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用
docker compose down 关闭并删除项目
docker compose down [options] [SERVICE...]
-v, --volumes 删除容器同时删除目录映射
docker compose run 指定容器执行命令
docker compose run [options] SERVICE [COMMAND] [ARGS...]
-d 后台运行容器
--name NAME 为容器指定一个名字
--entrypoint CMD 覆盖默认的容器启动指令
-e KEY=VAL 设置环境变量值,可多次使用选项来设置多个环境变量
-u, --user="" 指定运行容器的用户名或者 uid
--rm 运行命令后自动删除容器
-p, --publish=[] 映射容器端口到本地主机
compose命令链接:Docker run reference | Docker Docs
compose配置链接:Compose file | Docker Docs