dotnet docker

176 阅读3分钟

安装:

https://cr.console.aliyun.com/undefined/instances/mirrors //阿里云docker加速器地址
https://d9379vjn.mirror.aliyuncs.com
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=https://d9379vjn.mirror.aliyuncs.com |g" /var/lib/boot2docker/profile

{
  "registry-mirrors": [" https://docker.mirrors.ustc.edu.cn/"] //etc/dcoker/daemon.json
}

centos执行:




sudo yum update //更新yum包

yum remove docker docker-common docker-selinux docker-engine //卸载旧版本
yum install -y yum-utils device-mapper-persistent-data lvm2 //安装依赖包
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo //设置yum源
systemctl daemon-reload //重新加载daemon.json
sudo service docker restart //重启docker
yum install docker-ce //安装docker
sudo systemctl start docker //启动
sudo systemctl enable docker //开机启动
//删除docker

$ sudo yum remove docker-ce 
$ sudo rm -rf /var/lib/docker
yum remove docker-ce.x86_64 docker-ce-cli.x86_64 -y

命令:

docker ps //查看当前运行的容器
docker images //查看镜像
docker container ls //查看容器
docker start  container //启动容器
docker stop  container //停止容器
docker exec -it  <容器名称>  bash //进入容器运行
exit //退出容器运行
docker run 
      -p 8001 :80 //映射端口:容器端口
      -d detach //不阻塞当前进程
      --name //容器名称
      --restart //重启参数 always - 无论退出状态是如何,都重启容器
      -v=/docker/mysql:/var/lib/mysql //将文件互相映射
       <镜像名称>  

Mongodb安装

docker pull mongo
docker run -d -p 27016:27017  --name mymongo mongo
//文件挂载
docker run -d -p 27017:27017 --name mymongo -v /docker/mongo/config:/data/configdb -v /docker/mongo/db:/data/db mongo

Nginx**

mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf //创建nginx目录
docker cp d093d6d685fd:/etc/nginx/nginx.conf ~/nginx/conf //拷贝nginx默认配置文件到本地目录下的conf目录 容器id通过docker ps查看
docker run -d -p 5000:80 --name mynginx --privileged=true -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
start nginx
nginx -s quit
nginx -s reload


Mysql安装

docker pull mysql-mysqlserver
docker run -d -p 3306:3306 --name mymysql --restart=always  mysql/mysql-server
docker logs mymysql 查看默认密码  GENERATED ROOT PASSWORD: F3P+uP4RUNydunVYpYN3LAPApEtY
docker exec -it mymysql  bash 
mysql -uroot -p 默认密码登录
SHOW VARIABLES LIKE 'validate_password%'; //密码策略
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';/修改用户密码为password
use mysql //选择数据库
CREATE USER 'wql'@'localhost' IDENTIFIED BY 'password';//创建用户
CREATE USER 'wql'@'%' IDENTIFIED BY 'password';//创建IP用户
select user,host,plugin from user //查询user信息
GRANT ALL ON *.* TO 'wql'@'%' //分配权限
ALTER USER 'wql'@'%' IDENTIFIED WITH mysql_native_password BY 'password'//以mysql_native_password方式修改密码
FLUSH PRIVILEGES //刷新权限
show variables like '%char%'//查看当前数据库的字符集

注:
  • caching_sha2_password 是8.0默认的认证插件,必须使用支持此插件的客户端版本,可以改为mysql_native_password
  • 对象的owner将权限赋予某个用户(如:testuser1) 简单的说就是将权限传递给第三方
    • grant select ,update on bd_corp to testuser1 [with grant option ]
      1. 如果带了 with grant option 那么用户testuser1可以将select ,update权限传递给其他用户( 如testuser2)
    • grant select,update on bd_corp to testuser2 2. 如果没带with grant option 那么用户testuser1不能给testuser2授权

文件挂载

//注意要先创建文件,否则my.cnf会创建为目录而不是文件。运行报错
docker run -d -p 3306:3306  --name mysql1  -v ~/mysql/config/my.cnf:/etc/my.cnf -v ~/mysql/data:/var/lib/mysql mysql/mysql-server --innodb_use_native_aio=0

my.cnf文件里面
[mysqld]
user=mysql
character-set-server=utf8mb4

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8mb4

Dockerfile

dotnet镜像

  • microsoft/dotnet
  • microsoft/dotnet:sdk
  • microsoft/dotnet:-runtime
  • microsoft/dotnet:-runtime-deps
  • microsoft/aspnetcore
  • microsoft/aspnetcore-build

编译命令

docker build [选项] <上下文路径> 
docker build -t wql/console:build . //"."表示当前目录

Dockerfile指令

FROM: 指定基础镜像

RUN :执行命令

  • shell格式 RUN<命令>
  • exec格式 RUN["可执行文件","参数1","参数2"]
  • 每个RUN都会生成一层镜像,可以用&&将所需指令串联起来

COPY:复制文件

  • COPY [--chown=:]<源路径>...<目标路径>

ENTRYPOINT:入口点

  • CMD的内容将会作为参数传给ENTRYPOINT
  • 执行脚本,脚本内容根据CMD的内容来判断执行

ENV:设置环境变量

WORKDIR:指定工作目录

FROM microsoft/dotnet:sdk as build-env
WORKDIR /code
COPY *.csproj /code
RUN dotnet restore
COPY . /code
RUN dotnet publish -c Release -o out    
FROM microsoft/dotnet:runtime
WORKDIR /app
COPY --from=build-env /code/out /app
ENTRYPOINT ["dotnet","console.dll"]