菜鸟的Docker笔记

远航
2022-04-24 / 0 评论 / 145 阅读 / 正在检测是否收录...
镜像加速地址
http://hub-mirror.c.163.com
https://registry.docker-cn.com
http://f1361db2.m.daocloud.io
https://mirror.ccs.tencentyun.com
https://3laho3y3.mirror.aliyuncs.com
宿主机地址
host.docker.internal  
Redis 需要
在配置文件加上docker给容器分配的ip:假如是172.17.0.3
// vi /www/server/redis/redis.conf
bind 127.0.0.1 172.17.0.3
配置
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://registry.docker-cn.com",
        "http://f1361db2.m.daocloud.io",
        "https://mirror.ccs.tencentyun.com",
        "https://3laho3y3.mirror.aliyuncs.com",
        "https://registry.docker-cn.com",
    ],
    "builder": {
        "gc": {
            "enabled": true,
            "defaultKeepStorage": "20GB"
        }
    },
    "experimental": false,
    "features": {
        "buildkit": true
    }
}
基本命令
docker run 名称:标签  # 拉取并运行镜像 可以不加标签默认:latest
docker pull 名称:标签 # 拉取镜像
docker images #查看镜像
docker search 名称 # 搜索镜像
docker rmi 名称:标签|ID # 删除镜像
docker ps # 查看正在运行的容器
docker ps -a # 查看全部容器
# 创建容器 docker run --name 容器名字(可选) 镜像名称 
# -p 主机端口:容器端口(-P 随机) -it(进入容器前端运行) -di(守护进程后台运行)
docker run -it --name mycentos -p 80:80 centos
docker rm 名称:标签|ID # 删除容器
docker exec -it 容器名称|ID /bin/bash # 进入容器
docker stop 名称|ID # 停止容器
docker start 名称|ID # 运行容器
docker cp 文件或目录 容器名称:目录 # 拷贝文件到容器
docker cp 容器名称:目录 文件或目录 # 拷贝容器文件到主机
# 目录挂载 -v挂载 :ro 只读 :rw读写 例子:-v /a/:/aa:ro
# 新容器继承其他容器的挂载  --volumes-from 容器名字 支持:ro :rw
docker run -di -v 主机目录:容器目录 --name 容器名称 镜像:标签 # 目录挂载 多个 -v 挂载多个
docker run -di -v 容器目录 --name 容器名称 镜像:标签 # 匿名挂载 文件在/var/lib/docker/volumes/
docker run -di -v 名称:容器目录 --name 容器名称 镜像:标签 # 具名挂载
docker run --net=bridge #指定网络
docker inspect 名称 # 查看容器信息
docker volumes inspect 目录名称 # 查看这个目录是和谁挂载的
docker inspect --format'{{ .NetworkSettings.IPAddress }}' 容器名称|ID
# 查看容器IP
docker commit -a="作者" -m="描述" 容器名字 镜像名字:标签 # 创建镜像
docker save -o 目录/文件名.tar 镜像名称:标签 # 镜像备份
docker load -i 目录/文件名.tar # 加载镜像
# 网络
docker network ls #查看网络
docker network create -d bridge 网络名称  #-d 指定模式(默认桥接)bridge、host、none
docker network rm 网络名称 #删除网络
Dockerfile
FROM <image>:<tag> #根据那个镜像构建
LABLE <key>=<value> <key>=<value> #设置标签
RUN <command> #构建镜像时的命令
ADD <file> <dir> #拷贝文件到容器,可以是地址,并解压
COPY <file> <dir> #拷贝文件到容器
EXPOSE <port> #暴露容器端口,可以指定TCP/UDP 例:80 443 8080/tcp
ENV <key> <value> ... #设置环境变量
CMD <command> <param1> ... #容器启动后执行的命令 只能单条,会被创建容器时指定的命令覆盖
ENTRYPOINT <command> <param1> ... #容器启动后执行的命令 只能单条,不会被创建容器时指定的命令覆盖
WORKDIR <path> # 设置工作目录
VOLUME # 挂载数据卷

docker build -f Dockerfile -t 镜像名字:标签 拷贝文件的文件夹 #根据文件创建镜像

Demo
FROM golang:1.15-alpine
LABEL maintainer="yuanhang"
WORKDIR /root
RUN mkdir -p /root/new_dir/test && mkdir -p /root/new_dir/test2
ADD https://studygolang.com/dl/golang/go1.16.3.src.tar.gz /root/new_dir/test
ADD ./下载抖音无水印视频 /root/new_dir/test2
ADD ./main.go /root/new_dir
EXPOSE 8080
ENV GOPROXY https://goproxy.io
# 必须有任务在前台挂着
CMD go run /root/new_dir/main.go
1

评论

博主关闭了当前页面的评论