docker 安装
docker 安装
docker 本地仓库搭建:https://www.cnblogs.com/huanchupkblog/p/10843800.html
一、安装与配置
环境:centos7
1.安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装 Docker-CE 社区版
- 重建 Yum 缓存。
- 安装 Docker-CE ,请执行一下命令进行安装:
yum install docker-ce
4.启动、停止、重启 Docker-CE
- 开机启动
systemctl enable docker
- 启动
systemctl start docker
- 停止
systemctl stop docker
- 重启
systemctl restart docker
查看帮助文档
docker --help
5.[可选] 为 Docker 建立用户组
docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来。
- 建立 Docker 用户组
sudo groupadd docker
- 2.添加当前用户到 docker 组
sudo usermod -aG docker $USER
- 6.镜像加速配置 这里使用的是 阿里云提供的镜像加速 ,登录并且设置密码之后在左侧的 Docker Hub 镜像站点 可以找到专属加速器地址,复制下来。 然后执行以下命令:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["你的加速器地址"] } EOF
sudo systemctl daemon-reload sudo systemctl restart docker
之后重新加载配置,并且重启 Docker 服务
systemctl daemon-reload systemctl restart docker
二、docker 命令
Dockerfile 文件指令
根据 Dockfile 生成镜像
在项目根目录(有 Dockerfile 文件的路径下),运行以下命令
docker build -t {镜像名} -f Dockerfile . 特别注意:最后一个点,表示当前目录,不能缺少 比如:
G:\ docker build -t mynet5api:v20201115 -f Dockerfile .
创建容器
docker create --name [容器名] [镜像名] [镜像id]
启动、停止、杀死容器
docker start [容器名/ID]
docker stop <容器名 or ID> # 启动容器
docker kill <容器名 or ID> # 杀死容器
删除容器
docker stop [容器名/ID]
查看正在运行中的容器
docker ps
docker ps -a #查看所有容器,包括已经停止的。
查看容器日志
docker logs -f <容器名 or ID>
查看所有镜像文件
docker images
拉取镜像
docker pull NAME[:TAG]
示例代码:docker pull izory/my-image:latest 其中,NAME 是镜像仓库的名称(用来区分镜像),TAG 是镜像的标签(往往用来表示版本信息)。通常情况下,描述一个 镜像需要包括“名称+标签”信息。
注意:拉完镜像后同名的 tag 老的镜像名的 tag 会变成<none>
可以在使用 docker tag 进行归类或者删除,下面有介绍 语法:docker tag [IMAGE ID] [REPOSITORY 名]:[TAG 标识]
上传镜像
可以使用 docker push
命令上传镜像到仓库,默认上传到 Docker Hub 官方 仓库(需要登录)。命令格式为: docker push IMAGE-NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]
用户在 Docker Hub 网站注册后可以上传自制的镜像。例如用户 user 上传本 地的 test:latest 镜像,可以先添加新的标签 user/test:latest,然后用 docker push
命令上传镜像:
$ docker tag test:latest user/test:latest
$ docker push [user仓库用户名]/test:latest
The push refers to a repository [docker.io/user/test]
Sending image list
Please login prior to push:
Username:
Password:
如果是第一次上传会提示你输入用户名和密码
映射数据卷
docker -v /home/data:/opt/data # 这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址
运行镜像
docker run --name {启动并创建一个容器名称} -d -p {暴露访问端口}:{镜像项目中端口} {image 镜像名}:{tag 标签}比如:
docker run -d -p 8080:80 -v /home_data/logs:/app/logs --name mynet5_containner mynet5api:v20201115 --restart=always
- -d 表示在后台以守护态(daemonized)形式运行容器,并返回容器 ID
- -p 外部端口与内部容器端口映射。格式为:主机(宿主)端口:容器端口
- --name 指定容器的名称。当然可以不指定,默认会为我们随机创建
- --volume,-v:绑定一个卷,/宿主机目录:/容器目录
docker 镜像名 tag 为 none 的解决方案
首先为什么会出现为 none 的镜像? 一般是由 docker build 或 docker pull 命令生成相同的镜像名和 tag 名而成的
1、使用 docker image prune 2、使用 docker rmi $(docker images -f 'dangling=true' -q) 3、也可以使用 docker tag 进行操作
应用发布 Docker
首先系统需要先安装 docker、docker 安装后需要拉取 dotnet 环境,命令如下:
docker pull microsoft/dotnet
创建dockrfile文件
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
#设置端口
EXPOSE 80
# 复制发布文件到工作目录
COPY bin/Release/net5.0/publish/ App/
# 工作目录
WORKDIR /App
ENTRYPOINT ["dotnet", "WebCoreDemo.dll"]