`cv.glmnet` returns an object of type `cv.glmnet` (using dots in class names is asking for trouble with method dispatching, but this does not seem to be the problem here), which has overwritten methods for `predict` and `coef`, namely `predict.cv.glmnet` and `coef.cv.glmnet`. When you read their docs with

    > ?coef.cv.glmnet
    > ?predict.cv.glmnet

you will notice that they have an option `s` for specifying the lambda used. The coefficients seen in your question refer to `s="lambda.1se"`. Set it to `s="lambda.min"`, and the result is identical with your model trained with `lambda.min`:

    > cv.ridge <- cv.glmnet(model.matrix(Apps~.,College), College$Apps, alpha=0, nfold=100)
    > coef(cv.ridge, s="lambda.min")
    19 x 1 sparse Matrix of class "dgCMatrix"
                            1
    (Intercept) -1.468326e+03
    (Intercept)  .           
    PrivateYes  -5.278781e+02
    Accept       1.004588e+00
    ...
    > pred.out <- predict(cv.ridge, model.matrix(Apps~.,College), s="lambda.min")
    > mean((pred.out- College$Apps)^2)
    [1] 1358455

Remark: What do your data sets `train` and  `test` contain? Apparently something different from `College` because your MSE and coefficients are different.