欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Docker入门笔记

程序员文章站 2022-03-26 08:45:37
Docker入门笔记 随笔记录初学Docker遇到的问题, 以免下次再犯. 本机系统Ubuntu18.04 安装 Docker有2个版本 Community Edition (CE) 社区版(免费) Enterprise Edition (EE) 企业版 1. 删除旧版 2. 添加一些依赖包 3. ......

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重新运行容器