Docker入门笔记
docker入门笔记
随笔记录初学docker遇到的问题, 以免下次再犯. 本机系统ubuntu18.04
安装
docker有2个版本
- community edition (ce) 社区版(免费)
- enterprise edition (ee) 企业版
- 删除旧版
sudo apt-get remove docker docker-engine docker.io
- 添加一些依赖包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- 添加官方gpg key
curl -fssl https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 添加apt私有仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 安装docker
sudo apt-get update
sudo apt-get install docker-ce
- 检测是否安装
docker --version
创建镜像
- 新建dotnet控制台项目
mkdir dotnet-test
cd dotnet-test
dotnet new console
- 创建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" ]
- 编译docker镜像
docker build -t dotnet-test .
- 查看并运行刚才创建的docker镜像
docker images
可以在输出列表中找到dotnet-test
所在行
docker run dotnet-test
运行镜像, docker run
命令其实是2条命令(docker create
, docker start
)结合的快捷方式
搭建私服并上传镜像
- 更换镜像源, 换成国内网易的源快一点
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"
-
https
问题
这个问题可能是由于客户端采用https,docker registry未采用https服务所致。一种处理方式是把客户对地址“192.168.1.3:5000”请求改为http
vim /etc/docker/daemon.json
创建并编辑此文件, 输入内容 {"insecure-registries":["192.168.66.100:5000"]}
- 重启docker
sudo service docker restart
- 拉取
registry
镜像, 并启动
docker pull registry
拉取registry
镜像
sudo docker run -d -p 5000:5000 -v /home/xueyou/applications/docker/registry:/var/lib/registry registry
后台启动容器, 要用sudo
启动才能有网络权限
- 上传镜像到私服
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重新运行容器