当前位置: 移动技术网 > IT编程>开发语言>.net > Docker入门笔记

Docker入门笔记

2018年10月17日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网