https://www.bilibili.com/video/BV1Ls411n7mx?from=search&seid=1114919186249407154
    P19 12分钟
    1.掌握linux
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    docker 三要素
    仓库
    镜像
    容器

    docker search 查询 镜像
    docker search -f stars=num 列出星星数大于num的镜像
    docker search -f is-automated=true 列出自动为 的镜像
    docker pull * 下载镜像的最新版
    docker pull:版本 * 下载 指定版本 的镜像的最新版
    docker rmi * 删除镜像的最新版(多个不同版本时)
    docker rmi -f * 强制删除镜像的最新版(多个不同版本时)
    docker rmi -f ** 同时删除 和 *镜像
    docker rmi -f $(docker images -qa ) q 查询 imageId qa 过往和活着的
    docker run [OPTIONS] IMAGE [COMMAND] [ARG]
    docker run -d 后台模式启动 镜像名
    image.png
    docker run -it
    交互模式运行 镜像名
    docker run -it -p 8888:8080 tomcat -p指定端口 8888外部端口 8080容器内部映射端口 docker run -it -P tomcat -P 随机分配端口 *:8080
    image.png
    image.png
    docker ps [OPTIONS] 列出所有正在运行的容器
    image.png
    退出容器
    image.png
    停止容器
    docker stop (CONTAINER ID)
    docker kill (CONTAINER ID) 强制停止
    docker rm (CONTAINER ID) 删除已停止的容器
    一次性关闭多个容器
    image.png
    docker restart (CONTAINER ID) 重启容器 (exit后或者kill命令后)
    容器日志
    docker logs (CONTAINER ID) 查看容器的日志
    docker logs -t (CONTAINER ID) 带时间查看容器的日志
    docker logs -f (CONTAINER ID) 追加更新查看容器的日志
    docker logs —tail 3 (CONTAINER ID) 查看容器的三行日志
    容器进程
    docker top (CONTAINER ID) 查看容器的进程
    容器内部细节
    docker inspect (CONTAINER ID) 以json串告诉你容器内部细节
    重新进入容器
    docker attach (CONTAINER ID) 进入到容器中
    docker exec -it (CONTAINER ID) ls -l /tmp 返回在容器中执行的操作结果 ,不进入容器
    docker exec -it (CONTAINER ID) /bin/bash 进入容器/bin/bash目录
    docker start 容器id 停止后重新运行容器
    docker cp (CONTAINER ID):/tmp/yum.log /root 拷贝容器中的/tmp/yum.log 到 寄主机的/root路径下
    docker commit -m=”提交的描述信息” -a=”作者” 正在运行的容器ID
    上传自己的docker容器 作为自定义的容器
    docker 容器数据卷 (持久化)
    docker run -it -v /myDataVolume:/dataVolumeContainer 镜像名
    将宿主机的/myDataVolume 与 docker的/dataVolumeContainer 共享,容器停止再重启后两边会文件同步
    docker run -it -v /myDataVolume:/dataVolumeContainer:ro 镜像名
    将宿主机的/myDataVolume 与 docker的/dataVolumeContainer:ro 共享,容器停止再重启后会文件同步,但容器方不能创建文件使宿主机同步,容器中只读,只读取宿主机的/mydDataVolume共享的文档
    docker run -it -v /myProject:/usr/local/tomcat/webapps -p 9999:8080 镜像名:镜像版本号
    dockerfile 生成默认的共享文件夹
    用 docker inspect CONTAINERID 查看 Volumes属性 对应的地址
    image.png
    —name 给容器加别名
    —volumes-from 配置容器间传递共享
    容器之间配置信息的传递,数据卷的生命周期一直持续倒没有容器使用它为止
    例:
    启动一个容器04 共享容器03的 与宿主机的共享空间
    docker run -it —name dc04 —volumes-from dc03 镜像名
    使用docker 的三个步骤
    1.编写dockerfile文件
    2.使用 docker build 编译 dockerfile
    3.docker run 运行编译后的 文件
    FROM scratch
    scratch是祖先镜像,最原始镜像
    DockerFile 保留字指令 P24
    image.png
    image.png
    EXPOSE 是容器内应用的端口 是run 命令 -p 9999: 6379 中的 6379
    add功能更强,会解析url 和 解压压缩文件后拷贝
    image.png
    image.png
    docker build -f /usr/local/myDockerFile -f 指定Dockerfile的路径 不写默认在当前目录找 名称为 Dockerfile 的文件
    docker build -t mycentos:1.3 . mycentos:1.3后面有个 “ . “ 表示当前路径
    启动docker出错:connect: permission denied
    原因是:docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户,需要root权限才能访问。
    -e MYSQL_ROOT_PASSWORD=123456
    将镜像推到阿里云
    $ sudo docker login —username=17764009173 registry.cn-hangzhou.aliyuncs.com$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xwg/xwg_images:[镜像版本号]$ sudo docker push registry.cn-hangzhou.aliyuncs.com/xwg/xwg_images:[镜像版本号]
    systemctl start docker
    docker+微服务+ jenkins+ gitlab