zoukankan      html  css  js  c++  java
  • Docker入门笔记

    Docker入门笔记

    随笔记录初学Docker遇到的问题, 以免下次再犯. 本机系统Ubuntu18.04

    安装

    Docker有2个版本

    • Community Edition (CE) 社区版(免费)
    • Enterprise Edition (EE) 企业版
    1. 删除旧版

    sudo apt-get remove docker docker-engine docker.io

    1. 添加一些依赖包

    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

    1. 添加官方GPG Key

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

    1. 添加apt私有仓库

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

    1. 安装Docker

    sudo apt-get update

    sudo apt-get install docker-ce

    1. 检测是否安装

    docker --version

    创建镜像

    1. 新建dotnet控制台项目

    mkdir dotnet-test

    cd dotnet-test

    dotnet new console

    1. 创建Dockerfile并配置
      # 使用官方dotnet运行时作为父镜像
      FROM microsoft/dotnet:latest
    
      # 设置工作目录
      WORKDIR /app
    
      # 拷贝.csproj到工作目录/app,然后执行dotnet restore恢复所有安装的NuGet包
      COPY *.csproj ./
      RUN dotnet restore
    
      # 拷贝所有文件到工作目录(/app), 然后利用dotnet-cli发布应用到/app/out目录下
      COPY . ./
      RUN dotnet publish -c Release -o out
    
      # Docker容器启动时运行
      ENTRYPOINT [ "dotnet", "/app/out/dotnet-test.dll" ]
    
    1. 编译docker镜像

    docker build -t dotnet-test .

    1. 查看并运行刚才创建的docker镜像

    docker images 可以在输出列表中找到dotnet-test所在行

    docker run dotnet-test 运行镜像, docker run命令其实是2条命令(docker create, docker start)结合的快捷方式

    搭建私服并上传镜像

    1. 更换镜像源, 换成国内网易的源快一点

    sudo vim /etc/default/docker 编辑此配置文件, 输入以下内容(注意换成自己IP)

      # Docker Upstart and SysVinit configuration file
    
      #
      # THIS FILE DOES NOT APPLY TO SYSTEMD
      #
      #   Please see the documentation for "systemd drop-ins":
      #   https://docs.docker.com/engine/admin/systemd/
      #
    
      # Customize location of Docker binary (especially for development testing).
      #DOCKERD="/usr/local/bin/dockerd"
    
      # Use DOCKER_OPTS to modify the daemon startup options.
      #DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
      DOCKER_OPTS="--registry-mirror=http://hub-mirror.c.163.com --add-registry 192.9.1.3:5000 --insecure-registry 192.168.1.3:5000"
    
      # If you need Docker to use an HTTP proxy, it can also be specified here.
      #export http_proxy="http://127.0.0.1:3128/"
    
      # This is also a handy place to tweak where Docker's temporary files go.
      #export DOCKER_TMPDIR="/mnt/bigdrive/docker-tmp"
    
    1. https问题

    这个问题可能是由于客户端采用https,docker registry未采用https服务所致。一种处理方式是把客户对地址“192.168.1.3:5000”请求改为http

    vim /etc/docker/daemon.json 创建并编辑此文件, 输入内容 {"insecure-registries":["192.168.66.100:5000"]}

    1. 重启docker

    sudo service docker restart

    1. 拉取registry镜像, 并启动

    docker pull registry 拉取registry镜像

    sudo docker run -d -p 5000:5000 -v /home/xueyou/Applications/docker/registry:/var/lib/registry registry 后台启动容器, 要用sudo启动才能有网络权限

    1. 上传镜像到私服

    docker tag dotnet-test:latest 192.168.1.3:5000/dotnet-test 标记镜像, 将本地镜像和远程私服关联

    docker push 192.168.1.3:5000/dotnet-test 镜像上传到私服

    docker rmi 192.168.1.3:5000/dotnet-test 删除本地镜像

    docker pull 192.168.1.3:5000/dotnet-test 从私服下载镜像

    Tips

    • 有时候registry容器删不掉可以执行 sudo killall docker-containerd-shim 然后docker重新运行容器
  • 相关阅读:
    master线程的主循环,后台循环,刷新循环,暂停循环
    InnoDB的后台线程(IO线程,master线程,锁监控线程,错误监控线程)和内存(缓冲池,重做日志缓冲池,额外内存池)
    MySQL的连接方式
    编写高质量的 Java 代码
    TProfiler
    Copy-On-Write容器
    G1 垃圾收集器
    JAVA 虚拟机钩子
    Future和Promise
    算法笔记_134:字符串编辑距离(Java)
  • 原文地址:https://www.cnblogs.com/xueyoucd/p/9797440.html
Copyright © 2011-2022 走看看